python爬虫selenium行为链
有时候页面的操作可能需要很多步,可以使用鼠标行为链ActionChains来完成。
以打开Chrom浏览器百度搜素“侯小啾”为例。
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
# 定位 输入框 的 标签
input_elm = driver.find_element_by_id('kw')
# 定位 点击 百度一下 的 标签
button_elm = driver.find_element_by_id('su')
行为链代码:
# 行为链实例化(创建行为链对象)
actions = ActionChains(driver)
# 鼠标移动到输入的标签中
actions.move_to_element(input_elm)
# 输入内容到该标签中
actions.send_keys_to_element(input_elm, '侯小啾')
# 鼠标点击百度一下
actions.click(button_elm)
# 提交以上所有行为链的动作
actions.perform()
常用方法汇总:
-
move_to_element()
将鼠标移动到指定element,参数为标签。 -
move_by_offset(xoffset, yoffset)
将鼠标移动到与当前鼠标位置的偏移处。参数为X轴Y轴上移动的距离。(距离单位为像素,可以通过截图的方式来把握距离。) -
send_keys_to_element()
输入内容到标签中。
这里不能用send_keys()方法,send_keys()是的作用对象是标签,而在send_keys_to_element()中标签是函数的参数,该方法作用对象是行为链对象。 -
click()
点击一个标签。 -
perform()
执行所有存储的操作。因为行为链是一系列的动作,上边的命令不会写一个执行一个,执行要通过perform()命令来全部执行。 -
context_click(element)
右键点击一个标签 -
click_and_hold(element)
点击且不松开鼠标 -
double_click(element)
双击。 -
drag_and_drop(source, target)
按住源元素上的鼠标左键,然后移动到目标元素并释放鼠标按钮。 -
drag_and_drop_by_offset(source, xoffset, yoffset)
按住源元素上的鼠标左键,然后移动到目标偏移并释放鼠标按钮。 -
release(on_element=None)
在元素上释放按住的鼠标按钮 -
reset_actions()
清除已存储在本地和远程端的操作。
行为链方法中把按着的鼠标松开(释放),可以使用release()和reset_actions()两种方法。
actions.release()要写在actions.perform()前,通过perform方法来执行。
而reset_actions()也可以达到该效果,但要写在perform()之后,不依赖perform()来执行。释放动作推荐用release()。