首页 > 其他分享 >web自动化——Selenium 之鼠标操作和按键操作

web自动化——Selenium 之鼠标操作和按键操作

时间:2024-03-01 23:55:43浏览次数:27  
标签:web 调用 鼠标 ActionChains 元素 Selenium element 操作 ele

一、鼠标操作

鼠标是通过使用底层接口执行的,需要调用ActionChains对象来执行对应的方法

1、导入ActionChains类包

from selenium.webdriver.common.action_chains import ActionChains

2、ActionChains提供的鼠标操作方法

  1) clickAndHold 它将移动到该元素,然后在给定元素的中间单击(不释放)

  2) contextClick 此方法首先将鼠标移动到元素的位置, 然后在给定元素执行上下文点击(右键单击).

  3)doubleClick 它将移动到该元素, 并在给定元素的中间双击.

  4)moveToElement 此方法将鼠标移到元素的中间. 执行此操作时, 该元素也会滚动到视图中.

  5)moveByOffset 此方法将鼠标从其当前位置(或0,0)移动给定的偏移量. 如果坐标在视图窗口之外, 则鼠标最终将在浏览器窗口之外.

  6) dragAndDrop 此方法首先在源元素上单击并按住,然后移动到目标元素的位置后释放鼠标.

  7)release 此操作将释放按下的鼠标左键. 如果WebElement转移了, 它将释放给定WebElement上按下的鼠标左键.

click()     #单击
click_and_hold() #在特定元素上单击鼠标左键(不释放)
release() #抬起鼠标
double_click() #鼠标双击
move_to_element() #鼠标悬停到指定元素上
context_click() #鼠标右击
drag_and_drop() #拖动

3、执行鼠标操作方法

perform() -- 必须调用此方法,才能够在Ui页面当中看到鼠标操作效果

4、链式调用

ActionChains(driver).click_and_hold(drag_src_ele).move_to_element(mouse_on_ele).release().perform()
#通过鼠标按下某个元素->移动到某个元素上面去->鼠标释放->让动作生效

click_and_hold()、move_to_element()、perform()都是ActionChains类提供的实例方法。它们在类内部实现时,都return self(除perform())

5、使用步骤

  使用链式调用

  1)找到元素对象

  2)链式

ActionChains(driver).move_to_element(mouse_on_ele).pause(2).drag_and_drop(drag_src_ele,drop_dst_ele).perfor

6、调用

  • 一个一个多次调用

    1)实例化ActionChains类
    2)调用鼠标方法(可根据需求调多个)

# 1、实例化ActionChains类
ac = ActionChains(driver)
sleep(3)
# 2、调用鼠标方法(可根据需求调多个)
# 2.1 找到元素对象
loc = (By.ID, 'mouse_hover')
ele = driver.find_element(*loc)
# 2.2 调用鼠标方法,将元素对象作为参数传递
ac.move_to_element(ele)
# 3、调用perform()
ac.perform()
  • 链式调用

    1)找到元素对象
    2)调用鼠标方法,将元素对象作为参数传递
    3)调用perform()

# 鼠标悬浮、鼠标拖拽连着执行
# 先找到要操作的元素
mouse_on_ele = driver.find_element(By.ID, 'mouse_hover')
drag_src_ele = driver.find_element(By.ID, 'draggable')
drop_dst_ele = driver.find_element(By.ID, 'droppable')
ActionChains(driver).move_to_element(mouse_on_ele).pause(2).drag_and_drop(drag_src_ele,drop_dst_ele).perform()

二、按键操作

  操作步骤
  1)导入keys

from selenium.webdriver.common.keys import Keys

  2)使用keys方法

  •     Enter
driver.find_element_by_id("kw").send_keys("柠檬班",Keys.ENTER)
  •     Control+C
river.find_element_by_id("kw").send_keys(Keys.CONTROL, "c")

标签:web,调用,鼠标,ActionChains,元素,Selenium,element,操作,ele
From: https://www.cnblogs.com/mango-93/p/18048200

相关文章

  • web自动化——Selenium 之下拉
    一、select下拉列表Select类处理select-option1)导入Select类fromselenium.webdriver.support.selectimportSelect2)确保你要操作的元素是select。实例化Select类Select()3)找到select元素对象select_ele=driver.find_element(By.NAME,'cars')4)将sel......
  • web自动化——Selenium 之切换
    一、窗口(window)切换在浏览器当中,如果在页面进行了某个操作,结果浏览器打开了另外一个新窗口(tab)。如果要操作新窗口当中的页面元素,就需要窗口切换。前提:有新的窗口打开、或者你要操作其它窗口1、sleep(1)或显示等待--等待浏览器新的窗口出现(无法使用隐性等待,隐性......
  • zabbix-server启动后没有10051端口,web端报错
    1、登入zabbixweb端,报错信息如下 2、登入服务器上查看zabbix-server、zabbix-agent2、apache2等服务都正常运行 3、检查端口情况,发现apache2---80正常、zabbix-agent2---10050正常,只有zabbix-server没有端口信息(图一也是细节那栏也没有localhost:10051) 4、查看zab......
  • selenium——模拟qq空间登录
    fromseleniumimportwebdriverfromselenium.webdriver.common.keysimportKeysfromselenium.webdriver.common.byimportByfromtimeimportsleepweb_driver=webdriver.Chrome()web_driver.get("https://qzone.qq.com/")#切换作用域web_driver.switch_to......
  • Android 《SQLite 异步操作》
    一、数据库升级随着我们系统的升级,数据库一般也要跟着一起变化。Android中的SQLite数据库根据数据库版本号来判断是否进行了升级。当数据库版本号发生变化后,Android系统会调用SQLiteOpenHelper的ouUpgrade函数,然后我们在该函数中对版本号进行判断,再根据版本号执行对应的......
  • 常见的智能手机操作系统
    应用在手机上的操作系统主要有Android(谷歌)、iOS(苹果)、windowsphone(微软)、塞班系统(诺基亚)、BlackBerryOS(黑莓)、webos、windowsmobile(微软)、Harmony(华为鸿蒙系统)、卓易操作系统 [4](FreemeOS) [5]等。 基于Android▪SmartisanOS▪IUNIOS▪HTCSense▪LGOptimus▪......
  • 第九章 文件与文件夹操作
    第九章文件与文件夹操作一、文件的概念与分类1、文本文件:.log,txt,word,可以用记事本打开的文件2、二进制文件:数据库文件,图像文件,office文档等,不能用记事本打开的文件。需用特定软件进行增删改查。二、文件操作基本知识1、open()函数open(file,mode='r',buffering=-1,en......
  • C#常用GDI+文字操作汇总
    这篇文章主要介绍了C#常用GDI+文字操作,包括文字投影、倒影、旋转等特效,对于提升程序界面的视觉效果有很大的用处。本文实例汇总了C#常用GDI+文字操作,包含了文字的投影、倒影、旋转等常见的效果,在进行C#应用程序开发中有不错的实用价值。分享给大家供大家参考之用。具体如下:一......
  • Taurus.MVC WebMVC 入门开发教程6:路由配置与路由映射
    前言:在本篇Taurus.MVCWebMVC入门开发教程的第六篇文章中,我们将讨论如何配置路由并映射到控制器和操作方法。路由是决定应用程序如何响应客户端请求的重要组成部分,因此在Web开发中非常重要。我们将继续使用Taurus.Mvc命名空间,并探讨如何在应用程序中配置路由。步骤1:了......
  • 拯救php性能的神器webman-初入门
    无意间发现的这个神器webman,真是秋名山上的腾源拓海!该框架是workerman下的一个web开发的生态,我们可以先看看这里workerman的官方网站。workerman早有耳闻,知道它蛮厉害的,跟swoole也不相上下,这次主要是说webman,可以看这里 话不多说,赶紧上手。1.安装这个安装真的很简单,就一......