本文节选自霍格沃兹测试学院内部教材
当需要模拟键盘或者鼠标操作时,需要使用 ActionChains 来处理。

ActionChains 类常用于模拟鼠标的行为,比如单击,双击,拖动等行为。当你调用 ActionChains
的方法时,会将所有操作按顺序存入队列,当调用 perform() 方法时,队列中的事件会依次执行。

  •   # 引入依赖from selenium.webdriver import ActionChains
    
 **点击相关操作**

下面代码中的 on_element 是需要传递一个元素进去,默认值为 None。

  • 单击指定元素,如果不指定,会单击当前光标的位置

        action.click(on_element=None)
  • 长按某个元素

        action.click_and_hold(on_element=None)
  • 执行右键操作

        action.context_click(on_element=None)
  • 执行左键双击

        action.double_click(on_element=None)
  • 拖拽起始的元素到目标元素,即 source 到 target

        action.drag_and_drop(source, target)
  • 将目标拖动到指定的位置

  •   # xoffset 和 yoffset 是相对于 source 左上角为原点的偏移量action.drag_and_drop_by_offset(source, xoffset, yoffset)
    

按键

使用这个方法可以方便的实现某些组合键盘事件,比如按下 ctrl+c 键。

        action.key_down(value, element=None)

松开某个键,可以配合上面的方法实现按下 ctrl+c 并且释放。

  •   ActionChains(driver).key_down(Keys.CONTROL)\    .send_keys('c').key_up(Keys.CONTROL).perform()
    

其他按键请参考:

https://python-selenium-
zh.readthedocs.io/zh_CN/latest/7.4%20%E7%89%B9%E6%AE%8A%E5%AD%97%E7%AC%A6/

github
参考地址:https://github.com/SeleniumHQ/selenium/blob/916168f403dded05f878fe189d68c0f9152335c9/py/selenium/webdriver/common/keys.py

移动

  • 指定光标移动到某一个位置,需要给出两个坐标位置

          *   * *     *     *     *     # xoffset 和 yoffset 是相对于网页左上角的偏移量action.move_by_offset(xoffset, yoffset)
    
  • 将鼠标移动到指定元素的位置

        action.move_to_element(to_element)
  • 移动鼠标到相对于某个元素的偏移位置

  •   # xoffset 和 yoffset 是相对于 to_element 左上角的偏移量action.move_to_element_with_offset(to_element, xoffset, yoffset)
    

其它

  • 执行 ActionChains 中的操作
    前面介绍的方法会将所有操作按顺序存入队列,要执行这些操作,需要调用 perform() 方法。

        action.move_to_element_with_offset(to_element, xoffset, yoffset).perform()
  • 释放按下的鼠标

        action.release(on_element=None)
  • 向焦点元素位置输入值
    焦点元素:使用 tab 键,那些被选中的元素就是焦点元素。
        action.send_keys(*keys_to_send)
  • 向指定的元素输入数据
        action.send_keys_to_element(element, *keys_to_send)

使用ActionChains模拟键盘或者鼠标操作,就先讲到这里啦,大家还想看什么内容的文章也可以留言告诉我们哦!

** _
来霍格沃兹测试开发学社,学习更多软件测试与测试开发的进阶技术,知识点涵盖web自动化测试 app自动化测试、接口自动化测试、测试框架、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移、测试右移、精准测试、测试平台开发、测试管理等内容,课程技术涵盖bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvm-sandbox等相关技术,全面提升测试开发工程师的技术实力
QQ交流群:484590337
公众号 TestingStudio
视频资料领取:https://qrcode.testing-studio.com/f?from=CSDN&url=https://ceshiren.com/t/topic/15844
点击查看更多信息

进阶 | 手把手教你模拟键盘和鼠标操作-ActionChains相关推荐

  1. .net中模拟键盘和鼠标操作

    周银辉 其实SendKeys类提供的方法蛮好用的,可惜的是WPF中不能用了,说是WPF的消息循环方式改成了Dispatcher,所以直接调用System.Windows.Forms.SendKeys. ...

  2. 模拟键盘、鼠标操作或Windows hook 在部分软件失效的问题

    用户界面权限隔离(UIPI) 在Windows中的权限系统 除了在进程之间提供内核对象的访问保护,窗口系统还利用完整性级别来拒绝低完整性级别的进程访问/更新高完整性级别的进程的用户界面.这个机制称为用 ...

  3. 使用JS模拟键盘、鼠标操作

    //只在chrome测试过,大部分应用场景在webkit,所以不做其他兼容// 模拟键盘输入 window.inputValue = function (dom, st) {var evt = new ...

  4. selenium3.0模拟键盘、鼠标操作

    对于一些功能组合键,如 Fn + NmLk 来关闭或者打开数字键,或者 Alt+PrtSC 来抓取当前屏幕的活动窗口并保存到图片,通过 WebDriver 的 Keys 是没办法操作的. 这个时候我们 ...

  5. Hello Playwright:(7)模拟键盘和鼠标

    尽管在上一节中,我们已经能够通过FillAsync或ClickAsync来实现输入和点击元素.但是,还有其他场景,我们必须模拟用户使用键盘.鼠标与页面交互.例如在线文档: Page.Keyboard ...

  6. 模拟键盘、鼠标 mouse_event keybd_event

    MSDN 讲解:http://msdn.microsoft.com/en-us/library/ms646304(v=vs.85).aspx 中文讲解:http://dev.firnow.com/co ...

  7. python模拟按键与鼠标操作(一)

    简介 有时候我们需要使用python执行一些脚本,可能需要让程序自动按键或自动点击鼠标,来模拟人操作键盘.鼠标,这里推荐使用pywin32库,安装方式如下: 输入:pip install pywin3 ...

  8. python模拟按键与鼠标操作(二)将复制内容粘贴至指定文本框中

    一.简介 我们在使用python模拟键盘鼠标时,经常需要传入一些变量在页面的文本框中,比如传入查询数据的日期,查询数据的选项等等,这时我们可以利用datatime生成时间,定义为一个变量,然后利用以下 ...

  9. web ui自动化之模拟鼠标操作 - ActionChains

    文章目录 前言 ActionChains类方法介绍 1.执行所有存储的操作 - perform() 2.鼠标单击 - click() 3.点击鼠标左键,不松开 - click_and_hold() 4 ...

  10. C#获取键盘和鼠标操作的时间的类

    原文转自:http://www.cnblogs.com/kevinGao/archive/2011/09/19/2181464.html 最近在开发项目时需要实现屏保功能,即用户在设定的时间内没有对系 ...

最新文章

  1. 真人语音朗读软件_才知道,手机还自带文字转语音功能,一键按下便可实现,网友:赞...
  2. 小程序之 保存canvas生成商品图片附加小程序二维码 分享到朋友圈
  3. Onew——全球领先的区块链数字资产服务商
  4. 用API函数播放wav文件声音不连续的解决方法
  5. SAP C4C里前台Opportunity搜索的响应明细
  6. python 多线程并发编程(生产者、消费者模式),边读图像,边处理图像,处理完后保存图像实现提高处理效率
  7. ruby hash方法_Ruby中带有示例的Hash.default(key = nil)方法
  8. 浅谈SQLiteOpenHelper之onUpgrade例子
  9. 最容易进的大厂工作,百度经典百题
  10. Spark Structured : KuduException$OriginalException: Originalasynchronous stack trace
  11. Python 读写文本(open)
  12. 2015年传智播客JavaEE 第168期就业班视频教程day38-SSH综合案例-1
  13. “人,落魄时,千万别装可怜”你怎么看?
  14. Codeforces - 814B - An express train to reveries - 构造
  15. ❤️《大前端—Babel》
  16. ajax连接mysql数据库查询数据_ajax动态查询数据库数据并显示在前台的方法
  17. 演变与重塑----2014全球软件技术峰会感想
  18. golang批量修改文件名称
  19. PostgreSQL数据库——Pigsty
  20. xp计算机workgroup无法访问,无法访问,小编告诉你怎么解决workgroup无法访问

热门文章

  1. qq红包领取支付宝红包功能,qqxml跳转技术
  2. gmp php study,[技术干货] USP中文翻译连载 | 产品生命周期的包装密封性检查 (1、2之3)...
  3. 准谐振器和双二阶广义积分器的共同点和不同点
  4. dcp 1519 linux驱动下载,dcp1519驱动
  5. Python基础应用-摄氏温度换算
  6. BS和CS 架构的介绍以及优缺点
  7. iserdese2接口详解_Xilinx FPGA LVDS应用
  8. java获取本机ip和端口_java获取本机ip和端口
  9. ODAC安装配置与使用详解
  10. ImageOptim-无损图片压缩Mac版