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 将源元素拖动到指定的坐标