Action Chains类常用于模拟鼠标的行为,比如单击,双击,拖拽等行为,使用下面的方法导入Action Chains类
from selenium.webdriver.common.action_chains import ActionChains
下面先来看一个例子:
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
browser =webdriver.Firefox()
browser.get('http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
browser.switch_to.frame('iframeResult') # id = 'iframeResult'
source = browser.find_element_by_css_selector('#draggable') # 被拖拽的对象
target = browser.find_element_by_css_selector('#droppable') # 目标对象
actions = ActionChains(browser)
actions.drag_and_drop(source, target)
actions.perform()
time.sleep(3)
browser.close()
以上的例子中,实现了鼠标的拖拽操作,首先需要实例化,然后调用其中的方法,完成相应的操作。
下面是一些常用的模拟鼠标的操作
click(on_element=None)
鼠标单击
click_and_hold(on_element=None)
鼠标单击并且按住不放
context_click(on_element=None)
右击
double_click(on_element=None)
双击
drag_and_drop(source, target)
拖拽
drag_and_drop_by_offset(source, xoffset, yoffset)
将目标拖动到指定的位置
key_down(value, element=None)
按住某个键,使用这个方法可以方便的实现某些快捷键,比如下面按下Ctrl+c键
ActionsChains(browser).key_down(Keys.CONTROL).send_keys('c').perform()
key_up(value, element=None)
松开某个键,可以配合上面的方法实现按下Ctrl+c并且释放。
ActionsChains(browser).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()
move_by_offset(xoffset, yoffset)
指定鼠标移动到某一个位置,需要给出两个坐标位置
move_to_element(to_element)
将鼠标移动到指定的某个元素的位置
move_to_element_with_offset(to_element, xoffset, yoffset)
移动鼠标到某个元素位置的偏移位置
perform()
将之前的一系列的ActionChains执行
release(on_element=None)
释放按下的鼠标
send_keys(*keys_to_send)
向某个元素位置输入值
send_keys_to_element(element, *keys_to_send)
向指定的元素输入数据