一、ActionChains类的介绍

ActionChains模拟鼠标操作的常用方法。使用click()方法可以进行鼠标的单击操作,但是鼠标操作还包括:双击、右击、悬停、鼠标拖动等功能,所以,ActionChains类提供了鼠标的常用方法:

1、perform():执行所有ActionChains中存储的行为

2、context_click():右击

3、double_click():双击

4、move_to_element():悬停

5、drag_and_drop(source, target):拖动

二、鼠标方法的使用

导入ActionChains类:

from selenium.webdriver import ActionChains

1、鼠标悬停

import time

from selenium import webdriver
from selenium.webdriver import ActionChains

driver = webdriver.Chrome()
driver.get("https://www.runoob.com/html/html-tutorial.html")
driver.maximize_window()

# 定位到需要悬停的元素
hover = driver.find_element("xpath","//a[text()=' HTML / CSS']")

# 初始化一个ActionChains(driver)类
action = ActionChains(driver)
# 对定位的元素执行悬停操作
action.move_to_element(hover).perform()

# 强制等待5s,看一下效果
time.sleep(5)

# 关闭浏览器
driver.quit()

其中:

1)ActionChains(driver)

调用 ActionChains() 类,将浏览器驱动 driver 作为参数传入。

2)move_to_element(hover)

move_to_element() 方法用于模拟鼠标悬停操作,在调用时需要指定元素定位。

3)perform()

执行所有 ActionChains 中存储的行为,可以理解为是对整个操作的提交动作。

2、鼠标右击

import time

from selenium import webdriver
from selenium.webdriver import ActionChains

driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.maximize_window()

# 定位到需要右击的元素
right_click = driver.find_element("xpath","//a[text()='新闻']")

# 初始化一个ActionChains(driver)类
action = ActionChains(driver)
# 对定位的元素执行右击操作
action.context_click(right_click).perform()

# 强制等待5s,看一下效果
time.sleep(5)

# 关闭浏览器
driver.quit()

3、鼠标双击

import time

from selenium import webdriver
from selenium.webdriver import ActionChains

driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.maximize_window()

# 定位到鼠标需要双击的元素
double_click = driver.find_element("id","su")

# 初始化一个ActionChains(driver)类
action = ActionChains(driver)
# 对定位的元素执行双击操作
action.double_click(double_click).perform()

# 强制等待5s,看一下效果
time.sleep(5)

# 关闭浏览器
driver.quit()

4、鼠标拖动

import time

from selenium import webdriver
from selenium.webdriver import ActionChains


"""
鼠标拖动操作
"""
driver = webdriver.Chrome()
driver.get("https://demos.telerik.com/kendo-ui/dragdrop/index")
driver.maximize_window()

# 定位拖动的元素
start_el  = driver.find_element('id','draggable')
# 定位到拖动结束的地方
end_el = driver.find_element('id','droptarget')
#初始化一个类
actions = ActionChains(driver)
#执行拖动操作
actions.drag_and_drop(start_el,end_el).perform()
#强制等待5s
time.sleep(5)

关于鼠标操作方法的大致思路:

1、定位到需要进行鼠标操作的元素。

2、导入ActionChains类,初始化一个ActionChains类,将我们的浏览器驱动传进去。

3、调用ActionChains类下面的方法,需要啥操作就调用啥方法,然后将定位到的元素作为参数传入方法中。

4、再继续调用perform()方法,执行鼠标操作。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐