软件测试/测试开发丨Selenium 高级控件交互方法

一、使用场景

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

二、ActionChains解析

  • 实例化类ActionChains,参数为driver实例。
  • 中间可以有多个操作。
  • .perform()代表确定执行。
python 复制代码
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()
python 复制代码
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")

四、鼠标事件

4.1、双击

  • double_click(元素对象): 双击元素
python 复制代码
    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(起始元素对象, 结束元素对象): 拖动并放开元素
python 复制代码
    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(元素对象): 移动到某个元素
python 复制代码
    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()
python 复制代码
    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(横坐标,纵坐标)
python 复制代码
    def test_scroll_by_amount(self):
        self.driver.get('https://ceshiren.com/')
        self.action.scroll_by_amount(0, 1000).perform()

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关推荐
标致的自行车11 小时前
Selenium 爬虫固定开头:
爬虫·selenium·测试工具
郝学胜-神的一滴13 小时前
CMake 038:OBJECT目标复用编译+Linux动态库版本自动化管理
linux·c++·程序人生·软件工程·软件构建·cmake·工程配置
最爱老式锅包肉13 小时前
《HarmonyOS技术精讲-ArkWeb》进阶配置:自适应与交互控制
华为·交互·harmonyos
最爱老式锅包肉13 小时前
《HarmonyOS技术精讲-Core Speech Kit(基础语音服务)》第4篇:语音唤醒进阶——打造免提交互体验
交互·语音识别·harmonyos
安然无虞15 小时前
Python自动化测试·Selenium操控元素的方法
python·selenium·测试工具
USC-XiangLuXun16 小时前
GUI软件灰盒测试技术和方法 篇一
功能测试·microsoft·集成测试·mfc
Data_Journal17 小时前
使用 Selenium 进行网页抓取:分步指南
selenium·测试工具·microsoft
搬砖柯17 小时前
系列12-接口压测怎么做成平台能力?自研 httpx 引擎、分布式 Worker 与 Locust 选型对照
分布式·测试工具·性能优化·开源·自动化·httpx
2501_943782351 天前
【共创季稿事节】摇骰子:用 ArkTS 实现随机动画与交互反馈
运维·nginx·交互·harmonyos·鸿蒙·鸿蒙系统
搬砖柯1 天前
系列10-接口/UI 自动化怎么验落库?数据工厂与数据库断言实践
数据库·测试工具·ui·开源·自动化