前言

我们在做 Web 自动化的时候,有时候页面的元素不需要我们点击,值需要把鼠标移动上去就能展示各种信息。

这个时候我们可以通过操作鼠标来实现,接下来我们来讲一下使用 selenium 做 Web 自动化的时候如何来操作鼠标。

鼠标操作,我们可以使用 selenium 的 ActionChains 类来实现,我们先来认识一下这个类。

01.ActionChains 类常用方法

  • click_and_hold(on_element=None) :点击鼠标左键,不松开

  • context_click(on_element=None):点击鼠标右键

  • double_click(on_element=None):双击鼠标左键

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

  • move_by_offset(xoffset, yoffset):鼠标从当前位置移动到某个坐标

  • move_to_element(to_element) :鼠标移动到某个元素

  • release(on_element=None):在元素上释放按住的鼠标按钮

  • pause(seconds):暂停操作(秒)

02.ActionChains 类所有方法

  • perform(self)–执行鼠标操作方法

  • reset_actions()–清楚操作子令

  • click(on_element=None)–点击鼠标左键

  • click_and_hold(on_element=None):点击鼠标左键,不松开

  • context_click(on_element=None):点击鼠标右键

  • double_click(on_element=None):双击鼠标左键

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

  • drag_and_drop_by_offset(source, xoffset, yoffset) :拖拽到某个坐标然后松开

  • key_down(value, element=None):按下某个键盘上的

  • key_up(value, element=None) :松开某个

  • move_by_offset(xoffset, yoffset):鼠标从当前位置移动到某个坐标

  • move_to_element(to_element) :鼠标移动到某个元素

  • move_to_element_with_offset(to_element, xoffset, yoffset):移动到

  • 距某个元素(左上角坐标)多少距离的位置

  • pause(seconds):暂停操作(秒)

  • release(on_element=None):在元素上释放按住的鼠标按钮

  • send_keys(*keys_to_send):发送某个键到当前焦点的元素

  • send_keys_to_element(element, *keys_to_send) :发送某个键到指定元素

03.ActionChains 使用步骤

  1. 实例化:actions = ActionChains(driver)
  2. 调用鼠标操作方法:actions.move_to_element(menu)
  3. 执行鼠标操作方法:actions.perform()

04.实战

代码做的事情:

  1. 打开测试网页:https://www.runoob.com/try/try.php?filename=tryjs_events_mouseover
    切换 iframe
  2. 定位到绑定鼠标事件的 div
  3. 将鼠标移动到 div 上触发事件(可以观察到 div 上字会发生变化)

import time
from selenium import webdriver
from selenium.webdriver import ActionChains
driver = webdriver.Chrome(r"D:\chromeDriver\71\chromedriver71.exe")
driver.implicitly_wait(5)
driver.get(url="https://www.runoob.com/try/try.php?filename=tryjs_events_mouseover")
driver.maximize_window()
#切换iframe
driver.switch_to.frame(driver.find_element_by_xpath('//iframe[@id="iframeResult"]'))
#元素定位
ele = driver.find_element_by_xpath('//div[@onmouseover="mOver(this)"]')
#移动鼠标到元素上触发事件
actions = ActionChains(driver)
actions.move_to_element(ele)
actions.perform()
time.sleep(5)
driver.quit()

05.总结

  • ActionChains 类中其他方法使用方式都一样,大家有空可以试一下

  • ActionChains 类中有很多方法,但是常用的并不多,上面已经列出,掌握常用方法即可

  • 特别注意:ActionChains 的执行原理,当你调用 ActionChains 的方法时,不会立即执行,而是会将所有的操作按顺序存放在一个队列里,当你调用 perform()方法时,队列中的时间会依次执行。

  • ActionChains 类中的方法可以使用链式调用,大家思考思考自己拓展吧(其实很简单)。

搜索

复制

学会了selenium 模拟鼠标操作,你就可以偷懒点点点了的更多相关文章

  1. selenium模拟鼠标操作

    Selenium提供了一个类ActionChains来处理模拟鼠标事件,如单击.双击.拖动等. 基本语法: class ActionChains(object): """ ...

  2. python+selenium模拟鼠标操作

    from selenium.webdriver.common.action_chains import ActionChains #导入鼠标相关的包 ------------------------- ...

  3. 模拟鼠标操作(ActionChains)(转 侵删)

    在日常的测试中,经常会遇到需要鼠标去操作的一些事情,比如说悬浮菜单.拖动验证码等,这一节我们来学习如何使用webdriver模拟鼠标的操作 首页模拟鼠标的操作要首先引入ActionChains的包 f ...

  4. Python+Selenium自动化 模拟鼠标操作

    Python+Selenium自动化 模拟鼠标操作   在webdriver中,鼠标的一些操作如:双击.右击.悬停.拖动等都被封装在ActionChains类中,我们只用在需要使用的时候,导入这个类就 ...

  5. Java&Selenium 模拟鼠标方法封装

    Java&Selenium 模拟鼠标方法封装 package util; import org.openqa.selenium.By; import org.openqa.selenium.W ...

  6. selenium + python(鼠标操作)

    关于最近学习selenium自动化测试鼠标操作的一些总结 常见的鼠标操作

  7. windows7如何用键盘模拟鼠标操作

    windows7如何用键盘模拟鼠标操作 https://jingyan.baidu.com/article/6dad5075104907a123e36e38.html 听语音 37453人看了这个视频 ...

  8. webdriver模拟鼠标操作

    ActionChains 生成模拟用户操作的对象 from selenium.webdriver.common.action_chains import ActionChains ActionChai ...

  9. python selenium模拟滑动操作

    selenium.webdriver提供了所有WebDriver的实现,目前支持FireFox.phantomjs.Chrome.Ie和Remote quit()方法会退出浏览器,而close()方法 ...

随机推荐

  1. PHP全栈开发(八):CSS Ⅳ 文本格式及字体

    文本系列属性主要是设置文本格式的,例如.... 颜色 body {color:red;} h1 {color:#00ff00;} p.ex {color:rgb(0,0,255); 可以设置文本的居中 ...

  2. 使用Java实现haskell-style的list

    作为一个haskell这门函数式编程语言的爱好者,我特别喜欢它的list操作和推导功能.与传统面向对象或者过程语言不同的是,函数式语言通常喜欢把它们分为head.tail或者init.last等两部分 ...

  3. XSS-Game

    很简单的弹窗 http://192.168.31.177/xssgame/level1.php?name=<script>alert(1)</script> 过滤了>.& ...

  4. 齐博x1自定义字段关联其它字段的隐藏显示

    如下图,对于单选\多选\下拉框这种表单类型, 选择某一项后, 你还想他关联其它选项的隐藏或显示,你可以加多一个参数设置处理通常情况,用得最普遍的,就是两项参数,用竖线隔开,比如下面的1|洋房2|别墅 ...

  5. day05-JavaScript02

    JavaScript02 8.JavaScript函数 JavaScript函数介绍 函数是由事件驱动的,或者当它被调用时,执行的可重复使用的代码 例子 <!DOCTYPE html> & ...

  6. Rock18框架之整体框架介绍

    1. 总体框架图 2.框架能解决哪些问题? 问题1: 自动化设备包含龙门架.机械手.伺服.步进等电机.IO控制.定位及纠偏.界面展示等部分.其中硬件(伺服.IO等)是需要更换的,硬件的更换不影响整套系 ...

  7. letcode刷题记录-day03-罗马转整数

    题目 罗马转整数 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 ...

  8. HTML5和CSS3新特性

    1.HTML5新标签和属性 1.1 兼容性前缀与语义化 兼容低版本的写法.比较新的浏览器,可以直接写.兼容性前缀,是每个浏览器私有的. 内核 兼容性前缀 浏览器 Gecko -moz- Firefox ...

  9. Appscan安全扫描问题-会话检测失败

    在进行手动探索-使用浏览器记录时,在后续的继续探索中经常碰到会话检测失败的问题.然而在[配置-登录管理-自动]中记录账号密码后再继续探索仍然提示会话检测失败....网上查找了资料,从该博主的博文中成功 ...

  10. 【题解】CF1503B 3-Coloring

    题面传送门 解决思路 讲一下 \(\text{VP}\) 时的思路. 首先想到,只要能将棋盘中红色或蓝色部分全部填成同一个数,那么剩下的就不会受限了(可行有两个,限制只有一个): 但考虑到交互库可能有 ...