zoukankan      html  css  js  c++  java
  • 进阶 | 手把手教你模拟键盘和鼠标操作ActionChains

    本文节选自霍格沃兹测试学院内部教材

    当需要模拟键盘或者鼠标操作时,需要使用 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
    点击获取更多信息

  • 相关阅读:
    luoguP4336 [SHOI2016]黑暗前的幻想乡 容斥原理 + 矩阵树定理
    luoguP4208 [JSOI2008]最小生成树计数 矩阵树定理
    luoguP2303 [SDOI2012]Longge的问题 化式子
    poj1704 Georgia and Bob 博弈论
    poj3537 Crosses and Crosses 博弈论
    luoguP4783 [模板]矩阵求逆 线性代数
    luoguP5108 仰望半月的夜空 [官方?]题解 后缀数组 / 后缀树 / 后缀自动机 + 线段树 / st表 + 二分
    [Luogu5319][BJOI2019]奥术神杖(分数规划+AC自动机)
    Forethought Future Cup
    Codeforces Round 554 (Div.2)
  • 原文地址:https://www.cnblogs.com/hogwarts/p/15769647.html
Copyright © 2011-2022 走看看