selenium2 行为链
class selenium.webdriver.common.action_chains.ActionChains(driver)
ActionChains
可以完成简单的交互行为,例如鼠标移动,鼠标点击事件,键盘输入,以及内容菜单交互。这对于模拟那些复杂的类似于鼠标悬停和拖拽行为很有用
产生用户行为
当你在ActionChains
对象上调用行为方法时,这些行为会存储在ActionChains
对象的一个队列里。调用perform()
时,这些动作就以他们队列的顺序来触发。
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)
action.perform()
不管怎样,这些动作总是一个接一个按他们被调用的顺序执行。
click(on_element=None)
点击一个元素。
参数: on_element:
要点击的元素,如果是None
,点击鼠标当前的位置。
click_and_hold(on_element=None)
鼠标左键点击一个元素并且保持。
参数: on_element:
同click()
类似。
double_click(on_element=None)
双击一个元素。
参数: on_element:
同click()
类似。
drag_and_drop(source, target)
鼠标左键点击source
元素,然后移动到target
元素释放鼠标按键。
参数: source
:鼠标点击的元素 target
:鼠标松开的元素。
drag_and_drop_by_offset(source, xoffset,yoffset)
拖拽目标元素到指定的偏移点释放。
参数: source
:点击的参数 xoffset:X
偏移量yoffset:Y
偏移量。
key_down(value,element=None)
只按下键盘,不释放。我们应该只对那些功能键使用(Ctrl,
,Alt
,Shift
)。
参数: value
:要发送的键,值在Keys
类里有定义 element
:发送的目标元素,如果是None
,value
会发到当前聚焦的元素上。
例如,我们要按下 ctrl+c
:
ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()
key_up(value,element=None)
释放键。参考key_down
的解释。
move_by_offset(xoffset,yoffset)
将当前鼠标的位置进行移动。
参数: xoffset
:要移动的X偏移量,可以是正也可以是负 yoffset
:要移动的Y偏移量,可以是正也可以是负。
move_to_element(to_element)
把鼠标移到一个元素的中间。
参数:to_element
:目标元素。
move_to_element_with_offset(to_element,xoffset,yoffset)
鼠标移动到元素的指定位置,偏移量以元素的左上角为基准。
参数: to_element
:目标元素 xoffset
:要移动的X偏移量 yoffset
:要移动的Y偏移量。
perform()
执行所有存储的动作。
release(on_element=None)
释放一个元素上的鼠标按键。
参数: on_element
:如果为None
,在当前鼠标位置上释放。
send_keys(keys_to_send)
向当前的焦点元素发送键。
参数: keys_to_send
:要发送的键,修饰键可以到Keys
类里找到。
send_keys_to_element(element,keys_to_send)
向指定的元素发送键。