Selenium Web自动化测试 —— 高级控件交互方法!

一、使用场景

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

二、ActionChains解析

  • 实例化类ActionChains,参数为driver实例。

  • 中间可以有多个操作。

  • .perform()代表确定执行。

    ActionChains(self.driver).操作.perform()

三、键盘事件

  • 按下、释放键盘键位
  • 结合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()

3.3、键盘事件-复制粘贴

  • 多系统兼容

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

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

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

    现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
    如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
    可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
    分享他们的经验,还会分享很多直播讲座和技术沙龙
    可以免费学习!划重点!开源的!!!
    qq群号:110685036

四、鼠标事件

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)

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()

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()

五、滚轮/滚动操作

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

注意: 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()

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()

今天的分享就到此结束了,大家还有什么不懂的可以评论区下提问哈,如果我的文章对你有所帮助的话,可以点赞三联支持一下哈

相关推荐
啊阿狸不会拉杆7 小时前
《计算机网络-自顶向下方法》2.8 小结、课后习题和 Wireshark 实验 读书笔记
计算机网络·测试工具·wireshark·因特网
Anhty10 小时前
2026九月最新变声器测评:iOS安卓双端适配,低延迟运行更稳定
android·人工智能·功能测试·ios·智能手机
PS测11 小时前
Linux压力测试工具stress,能精确控制 CPU、内存、IO 负载类型和持续时间
测试工具
2601_9623878215 小时前
web自动化测试实战教程【selenium/unittest/pytest】【共193课
selenium·pytest·devops·web自动化测试·unittest
qianshi121318 小时前
涂层划痕测试仪-精准评估涂层附着力,兼顾科研与工业质量检测
经验分享·测试工具·百度
PhotonixBay18 小时前
3D共聚焦显微镜与探针式粗糙度仪:谁更适合亚表面损伤检测?
图像处理·人工智能·测试工具·3d
2601_9622972518 小时前
Python、Pytest、Allure、Selenium和Jenkins实现自动化测试集成实例
python·selenium·jenkins·pytest·allure
qianshi121318 小时前
电化学腐蚀摩擦磨损试验机的工作原理、操作流程、适用范围行业和产品特点
测试工具·百度
努力搬砖的小H19 小时前
FPGA应用技巧之Block Design基本使用方法
功能测试·fpga开发·zynq·block design
是吕先森20 小时前
【python】selenium实现web自动化测试
前端·python·selenium