selenium (五) ActionChains

本文详细介绍了Selenium中ActionChains类的使用方法,包括鼠标操作如右键、双击、拖动等,以及键盘操作如按键、组合键等。通过示例展示了如何在网页自动化测试中模拟复杂的用户交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ActionChains类其实就是对鼠标操作的扩展,比如右键、双击、按下拖动等操作


还是先看看ActionChains自带的例子:
menu = driver.find_element_by_css_selector(".nav")
hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")
ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()
或者
menu = driver.find_element_by_css_selector(".nav")
hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")

actions = ActionChains(driver)
actions.move_to_element(menu)
actions.click(hidden_submenu)
actions.perform()
这两种方式的效果是一样的。


下面是ActionChains的方法
perform():执行所有存储的操作。
reset_actions():清除已存储在本地和远程端的操作

click(on_element=None):
作用:单击元素。
参数:
on_element:要单击的元素。
如果为None,则单击当前鼠标位置。

click_and_hold(on_element=None):
作用:按住元素上的鼠标左键。
参数:
on_element:鼠标按下的元素。
如果为None,则单击当前鼠标位置。


context_click(on_element=None):
作用:在元素上执行上下文单击(右键单击)。
参数:
on_element:上下文单击的元素。
如果为None,则单击当前鼠标位置。


double_click(on_element=None):
作用:双击元素。
参数:
on_element:双击的元素。
如果为None,则单击当前鼠标位置。

drag_and_drop(source, target):
作用:按住元素上的鼠标左键,然后移动到目标元素并释放鼠标按钮。
参数:
source:鼠标按下的元素。
target:要鼠标移动的元素。


drag_and_drop_by_offset(source, xoffset, yoffset):
作用:按住元素上的鼠标左键,然后移动到目标偏移并释放鼠标按钮。
参数:
source:鼠标按下的元素。
xoffset:移动到的X偏移量。
yoffset:Y偏移移动到。


key_down(value, element=None):
作用:仅发送按键,而不释放它。只能与修改键(Control,Alt和Shift)一起使用。
例如,按ctrl + c
ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()


key_up(value, element=None):
作用:释放修改键
例如,按ctrl + c
ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()


move_by_offset(xoffset, yoffset):
作用:将鼠标移动到当前鼠标位置的偏移量。
参数:
xoffset:要移动到的X偏移量,作为正整数或负整数。
yoffset:要移动到的Y偏移量,作为正整数或负整数。


move_to_element(to_element):
作用:将鼠标移动到元素的中间。
参数:to_element:要移动到的WebElement。


move_to_element_with_offset(to_element, xoffset, yoffset):
作用:将鼠标移动指定元素的偏移量。偏移量相对于元素的左上角。
参数:
to_element:要移动到的WebElement。
xoffset:移动到的X偏移量。
yoffset:Y偏移移动到。


pause(seconds):
作用:在几秒钟内暂停指定持续时间内的所有输入


release(on_element=None):
作用:释放元素上的鼠标按钮。
参数:
on_element:鼠标移动的元素。
如果为None,则释放当前鼠标位置。


send_keys(*keys_to_send):
作用:将键发送到当前聚焦元素。
参数:
keys_to_send:修饰符键常量可以在中找到'键'类。


send_keys_to_element(element, *keys_to_send):
作用:将键发送到元素。
参数:
element:发送密钥的元素。
keys_to_send:要发送的密钥。 修饰符键常量可以在中找到'键'类

 

实例:

 

#-*-encoding:utf-8-*-

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains


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


def click_picture_link():
	#点击百度页面-【更多产品】->【图片】链接
	try:
		element=driver.find_element_by_css_selector("#u1 > a.bri")
		ActionChains(driver).move_to_element(element).perform()    #点击【更多产品】
		element_all=driver.find_element_by_xpath('//*[@id="head"]/div/div[4]/div/div[2]/div[1]/div/a[3]')
		ActionChains(driver).click(element_all).perform()    #点击【图片】
	except Exception as e:
		raise e




if __name__=="__main__":
	click_picture_link()

  

 

转载于:https://www.cnblogs.com/JcHome/p/10805836.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值