selenium之鼠标操作

news/2024/11/29 21:19:35/

首先导入ActionChains类,该类可以完成鼠标移动,鼠标点击事件,键盘输入、内容菜单交互等交互行为。

from selenium.webdriver.common.action_chains import ActionChains

操作语法:

        第一步:初始化ActionChains类(动作链条):action = ActionChains(driver)

        第二步:找到要操作的元素:element = driver.find_element(by='xx', value='xx')

        第三步:调用鼠标操作方法:action.move_to_element(element)

        第四部:执行鼠标操作方法:action.perform()

在实际调用ActionChains类的方法时,不会立即执行鼠标操作,而是会将所有的操作顺序存放在一个队列里,最终调用perform()方法,队列中的操作会依次进行。

( ActionChains 类提供了对动作的链式操作,也就是可以生成一个操作的队列,将复杂的操作过程分解成单个操作,然后组合起来一次性执行)

(在 ActionChains 类中所有提供的鼠标事件方法,在调用的时候所有的行为都存储在 ActionChains 对象中,而 perform() 方法就是真正去执行所有的鼠标事件。)

常用方法:

1、点击鼠标左键----click(element)

action = ActionChains(driver)
element = driver.find_element('class name', 'hot-refresh-text')
action.click(element).perform()

简写为:

driver.find_element('class name', 'hot-refresh-text').click()

2、鼠标移动到元素上-------move_to_element(element)

执行操作:

ActionChains(driver).move_to_element(driver.find_element('id', 's-usersetting-top')).perform()
# 移动鼠标到元素上

3、点击鼠标左键,不松开----click_and_hold(element)

执行操作:

action = ActionChains(driver)
element = driver.find_element('class name', 'hot-refresh-text')
action.click_and_hold(element).perform()

 4、点击鼠标右键----context_click(element)

        对于点击鼠标右键,如果弹出的是浏览器默认的菜单,Selenium没有提供操作菜单选项的方法; 如果是自定义的右键菜单,则可以通过元素定位来操作菜单中的选项。

action = ActionChains(driver)
element = driver.find_element('xx', 'xx')
action.context_click(element).perform()

5、双击鼠标左键----double_click(element)

action = ActionChains(driver)
element = driver.find_element('xx', 'xx')
action.double_click(element).perform()

6、drag_and_drop(source, target) :拖拽到某个元素然后松开

        说明:模拟鼠标拖动动作,选定拖动源元素释放到目标元素后鼠标松开。

  • 初始化类:action = ActionChains(driver)
  • 源元素:source = driver.find_element(by='xx', value='xx')
  • 目标元素 :target = driver.find_element(by='xx', value='xx')
  • 调用方法 :action.drag_and_drop(source, target).perform()
action = ActionChains(driver)
source = driver.find_element('xx', 'xx')
target = driver.find_element('xx', 'xx')
action.drag_and_drop(source, target).perform()

7、执行鼠标操作-----perform()

其他方法:

1、清除已在队列中的鼠标操作命令----reset_actions()

2、拖拽到某个坐标后松开----drag_and_drop_by_offset(source, x, y) 

        源元素:source = driver.find_element(by='xx', value='xx')

3、按下某个键盘上的键----key_down(value, element)

4、松开某个键----key_down(value, element)

5、鼠标从当前位置,移动到某个坐标----move_by_offset(x, y)

6、鼠标移动到距离某个元素多少距离的位置----move_to_element_with_offset(element, x, y)

7、在元素上释放按住的鼠标按钮----release(element)

        说明:在某个元素位置松开鼠标左键,与 click_and_hold(element) 点击鼠标左键不松开结合使用。(如果有鼠标按下的操作,那么需要通过 release() 方法释放鼠标)

8、暂停操作-----pause(seconds)

        结合使用,比如:鼠标移动到某元素上悬停的时间。(暂停所有动作,相当于等待,用于链式操作过程中的等待)


http://www.ppmy.cn/news/580500.html

相关文章

pycharm中插件的使用;

pycharm中插件的使用; 1.英语翻译插件 Translation 使用方法 在pycharm中输入英文,右键,例如输入port想知道这个意思, 中文 也是一样的 2.pycharm的中文界面插件,安装后就是中文界面了

前端系列19集-vue3引入高德地图,响应式,自适应

npm i amap/amap-jsapi-loader --save import AMapLoader from amap/amap-jsapi-loader // 使用加载器加载JSAPI,可以避免异步加载、重复加载等常见错误加载错误 //为地图注册click事件获取鼠标点击出的经纬度坐标 map.on("click", function (e: any) { …

如何评价论文的创新

摘要: 创新性是论文的核心. 本贴描述论文创新的几种评价视角, 并举例说明. 1. 问题与方法的视角 这是最常见的视角. 1.1 老问题老方法 在某些领域, 能想到的方法几乎都想到了, 所以人们写论文的时候, 会写成如下形式: 例 1. GoogleNet在基于示功图故障诊断中的应用——以大…

eric6汉化(新版本没有汉化包了)

安装完install.py ,找不到汉化包,执行install-i18n.py 看看有什么变化。重新打开eric6.

xfce4汉化

xfce4 设置中文 安装locales并配置 sudo apt install locales sudo dpkg-reconfigure locales选择语言编码en_US.UTF8,zh_CN GB2312,zh_CN GBK GBK,zh_CN UTF-8 UTF-8 为当前用户配置默认语言为中文zh_CN UTF-8 UTF-8 nano ~/.bashrc在.b…

用BERT做命名实体识别任务

命名实体识别NER任务是NLP的一个常见任务, 它是Named Entity Recognization的简称。 简单地说,就是识别一个句子中的各种 名称实体。 诸如:人名,地名,机构 等。 例如对于下面这句话: 小明对小红说:"你…

eric6汉化

1、下载eric6_zh_CN.qm 链接:https://pan.baidu.com/s/1UZBgh7o0wj2LgRgtVrMEag 提取码:4shf 2.找到安装Eric6下的语言包,将上述qm文件移至该位置 3、重新启动eric6 汉化后

SourceInsight 汉化

Source Insight 4.0 怎么设置中文? 不错的