写点什么

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

作者:测试人
  • 2023-09-05
    北京
  • 本文字数:1393 字

    阅读完需:约 5 分钟

免费领取:测试资料+测试用例+简历模板+测试文档

本文为霍格沃兹测试开发学社学员学习笔记分享

原文链接:https://ceshiren.com/t/topic/27045

一、使用场景


  • https://www.selenium.dev/documentation/webdriver/actions_api

二、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 的复制按钮为 COMMANDwindows 的复制按钮为 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)
复制代码

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()
复制代码


发布于: 22 小时前阅读数: 2
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试/测试开发丨Selenium Web自动化测试 高级控件交互方法_Python_测试人_InfoQ写作社区