• 软件测试/测试开发丨Selenium Web自动化测试 高级控件交互方法


    点此获取更多相关资料

    本文为霍格沃兹测试开发学社学员学习笔记分享
    原文链接:https://ceshiren.com/t/topic/27045

    一、使用场景

    使用场景对应事件
    复制粘贴键盘事件
    拖动元素到某个位置鼠标事件
    鼠标悬停鼠标事件
    滚动到某个元素滚动事件
    使用触控笔点击触控笔事件(了解即可)

    二、ActionChains解析

    • 实例化类ActionChains,参数为driver实例。
    • 中间可以有多个操作。
    • .perform()代表确定执行。
    ActionChains(self.driver).操作.perform()
    
    • 1

    三、键盘事件

    • 按下、释放键盘键位
    • 结合send_keys回车

    3.1、键盘事件——使用shift键实现大写

    • mouse = ActionChains(self.driver):实例化ActionChains类
    • mouse.key_dowm(keys.SHIFT,ele):按下SHIFT键
    • mouse.send_keys(“selenium”):输入字母自动变成大写
    • mouse.perform()

    3.2、键盘事件——输入后回车

    • 方法1:.send_keys(Keys.ENTER)
    • 方法2:ActionChains().send_keys(Keys.ENTER).perform()
    self.driver.find_element(By.XPATH, '//input[@aria-label="搜索"]').send_keys(Keys.ENTER)
    self.action.send_keys(Keys.ENTER).perform()
    
    • 1
    • 2

    3.3、键盘事件-复制粘贴

    • 多系统兼容

      • mac 的复制按钮为 COMMAND
      • windows 的复制按钮为 CONTROL
    • 左箭头:Keys.ARROW_LEFT

    • 按下COMMAND或者CONTROL: key_down(cmd_ctrl)

    • 按下剪切与粘贴按钮: send_keys("xvvvvv")

    四、鼠标事件

    4.1、双击

    • double_click(元素对象): 双击元素
        def test_double_click(self):
            self.driver.get("https://vip.ceshiren.com/#/ui_study/frame")
            ele01 = self.driver.find_element(By.XPATH, '//button[@class="el-button el-button--primary"]')
            self.action.double_click(ele01).perform()
            time.sleep(3)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4.2、鼠标事件-拖动元素

    • drag_and_drop(起始元素对象, 结束元素对象): 拖动并放开元素
        def test_drag_and_drop(self):
            self.driver.get("https://vip.ceshiren.com/#/ui_study/action_chains")
            ele01 = self.driver.find_element(By.ID, "item1")
            ele02 = self.driver.find_element(By.ID, "item3")
            self.action.drag_and_drop(ele01, ele02).perform()
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4.3、 鼠标事件-悬浮

    • move_to_element(元素对象): 移动到某个元素
        def test_move_to_element(self):
            self.driver.get('https://vip.ceshiren.com/#/ui_study/action_chains2')
            ele01 = self.driver.find_element(By.XPATH, '//div [@data-v-3e28c77a and @class="title"]')
            self.action.move_to_element(ele01).perform()
            self.driver.find_element(By.XPATH, '//*[contains(text(),"管理")]').click()
    
    • 1
    • 2
    • 3
    • 4
    • 5

    五、滚轮/滚动操作

    • 滚动到元素
    • 根据坐标滚动

    注意: selenium 版本需要在 4.2 之后才支持滚动操作

    5.1、滚动到元素

    • ActionChains().scroll_to_element().perform()
        def test_scroll_to_element(self):
            self.driver.get('https://ceshiren.com/')
            ele01 = self.driver.find_element(By.PARTIAL_LINK_TEXT, "jmeter分布式压测创建多节点报错")
            self.action.scroll_to_element(ele01).perform()
            self.action.scroll_by_amount(0, 100).perform()   
            ele01.click()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    5.2、根据坐标滚动

    • ActionChains.scroll_by_amount(横坐标,纵坐标)
        def test_scroll_by_amount(self):
            self.driver.get('https://ceshiren.com/')
            self.action.scroll_by_amount(0, 1000).perform()
    
    • 1
    • 2
    • 3
  • 相关阅读:
    麒麟操作系统使用dconf配置环境变量记录
    多曲面卡片
    Android APK 反编译+修改+重打包+签名
    【计算机网络】认识协议
    react 手写树形渲染组件
    ETCD数据库源码分析——etcd gRPC 服务 API
    计算机组成原理期末复习第三章-3(唐朔飞)
    梳理思绪的过程
    ctfshow node.js专题
    解析短视频美颜SDK:技术原理与应用
  • 原文地址:https://blog.csdn.net/Ceshiren666/article/details/132694976