selenium(3)-针对鼠标的操作

背景

用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击、双击、点击鼠标右键、拖拽等等。

而selenium给我们提供了一个类来处理这类事件-----------ActionChains

有哪些鼠标操作呢

  • 执行操作
  • 左键,右键单击双击
  • 鼠标悬停到元素,漂移处
  • 长按
  • 拖动

执行操作

perform() 方法

主要是调用其他操作方法后,都要再次调用这个方法,表示执行某个鼠标操作,后面会有例子

左键右键,单击双击

 1 from selenium.webdriver import ActionChains
 2 from selenium import webdriver
 3 
 4 driver = webdriver.Chrome(r"H:/cci/data/chromedriver.exe")
 5 
 6 # 创建实例
 7 chains = ActionChains(driver)
 8 
 9 # 访问网址
10 driver.get("禅道的url")
11 
12 # 登录按钮
13 username = driver.find_element_by_id("account")
14 login = driver.find_element_by_id("submit")
15 password = driver.find_element_by_name("password")
16 
17 # 左键点击
18 chains.click(username).perform()
19 
20 # 右键点击
21 chains.context_click(username).perform()
22 
23 # 双击
24 chains.double_click(password).perform()

鼠标悬停到元素,指定偏移处

1 # 悬停到登录按钮
2 chains.move_to_element(login_btn).perform()
3 
4 # 悬停到指定偏移量
5 chains.move_to_element_with_offset(login_btn, 2, 2).perform()

知识点

move_to_element_with_offset() 是先找到元素,再根据元素位置偏移指定偏移量

长按

1 # 长按
2 chains.click_and_hold(login_btn).perform()

拖动

1 # 拖动到某个元素后松开
2 chains.drag_and_drop(source=username, target=password)
3 
4 # 拖动到某个坐标值
5 chains.drag_and_drop_by_offset(source=username, xoffset=20, yoffset=20)

知识小节

  • drag_and_drop 将源元素拖动到目标元素处
  • drag_and_drop_by_offset 将源元素拖动到指定的坐标
原文地址:https://www.cnblogs.com/xinhua19/p/13156740.html