selenium (五) ActionChains

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()

  

 

posted @ 2019-05-03 17:50  西夏一品唐  阅读(555)  评论(0编辑  收藏  举报