本文主要介绍如何在使用selenium进行自动化测试的时候模拟各种鼠标操作。
文章目录
- 场景描述
- 解决方案
- 具体代码
在进行自动化测试的时候,我们可能会需要需要进行鼠标操作的场景,比如:
在python
的第三方库selenium
中已经提供了许多现成的鼠标操作方法,包括鼠标能进行的三种操作:点击、释放、移动。以及提供了这三种操作常见的组合操作,我们需要查看我们需要的组合操作是否已经由selenium
提供,对于没有现成方法的操作,需要将我们要进行的鼠标操作分解成这些已经有现成方法的鼠标操作的组合。
在selenium
中模拟鼠标操作需要依靠ActionChains()
方法,这个方法用来模拟各种外部设备(虚拟设备)的操作(比如键盘、鼠标、手写笔、滚轮等等),操作如下:
导入AcitionAPI:from selenium.webdriver.common.action_chains import ActionChains
左键单击(点击后释放):ActionChains(web_driver).click(page_element).perform()
右键单击:ActionChains(web_driver).context_click(page_element).perform()
左键双击:ActionChains(web_driver).double_click(page_element).perform()
移动到指定的页面元素上(悬浮):ActionChains(web_driver).move_to_element(page_element).perform()
后退(扩展键):
selenium 3
的版本中不支持,需要升级到selenium 4
print(selenium.__version__)
查看action = ActionBuilder(web_driver)
action.pointer_action.pointer_down(MouseButton.BACK)
action.pointer_action.pointer_up(MouseButton.BACK)
action.perform()
前进(扩展键):
selenium 3
的版本中不支持,需要升级到selenium 4
action = ActionBuilder(web_driver)
action.pointer_action.pointer_down(MouseButton.FORWARD)
action.pointer_action.pointer_up(MouseButton.FORWARD)
action.perform()
按下左键后不松开:ActionChains(web_driver).click_and_hold(page_element).perform()
移动指定距离:ActionChains(web_driver).move_by_offset(横向距离, 竖向距离)
将指定元素拖拽到目标区域:
ActionChains(web_driver).drag_and_drop(要拖拽的页面元素,代表目标区域的页面元素).perform()
find_element
定位拖拽元素移动一定距离:
ActionChains(web_driver).drag_and_drop_by_offset(要拖拽的元素, 横向移动距离, 竖向移动距离).perform()
鼠标中键点击:
action = ActionBuilder(web_driver)
action.pointer_action.pointer_down(MouseButton.MIDDLE)
action.pointer_action.pointer_up(MouseButton.MIDDLE)
action.perform()
假设滑块的id为slide-1
,则可以用如下代码将滑块按住后往左移动300,使得通过验证:
from selenium.webdriver.common.action_chains import ActionChains
slide = web_driver.find_element_by_id("slide-1") # selenium 3.x.x 的写法
slide = web_driver.find_element("id", "slide-1") # selenium 4.x.x 的写法
ActionChains(web_driver).drag_and_drop_by_offset(slide, 300, 0).perform()
滑动完成后效果如下:
如果要处理的滑块验证在iframe
标签中,记得先定位并切换到iframe元素中,然后再进行操作。快去试试吧~
好书推荐:
- 流畅的python
- Python编程 从入门到实践 第2版
- Python数据结构与算法分析 第2版
好课推荐:
- 零基础学python
- python核心技术与实战
- python自动化办公实战
写文不易,如果对你有帮助的话,来一波点赞、收藏、关注吧~