一、鼠标事件
ActionChains类包含了鼠标操作。
ActionChains类中鼠标操作的常用方法:
context_click()------------------右击
double_click()-------------------双击
drag_and_drop()---------------拖动
move_to_element()------------鼠标悬停在一个元素上
click_and_hold()----------------在一个元素上按鼠标左键
ActionChains的使用
from selenium.webdriver.common.actionchains import ActionChains
ActionChains的执行原理:
调用ActionChains方法的时候,用户行为不会立即执行,而是将所有的操作放在一个队列中,当执行perform()的时候,按照放入队列的顺序先进先出执行
ActionChains的书写方法:
链条式方法:
ActionChains(driver).context_click(right_click).perform()
分布式方法:
ActionChainsdriver = ActionChains(driver).context_click(right_click)
ActionChainsdriver.perform()
ActionChains鼠标操作可以分为3类:
鼠标的点击、移动和拖曳
鼠标的点击
右击------------------context_click(rightclickelement)
双击------------------double_click(doubleclickelement)
单击------------------click(buttonelement)
按住左键------------click_and_hold(dlickholdelement)
1、context_click()
ActionChains(driver)
driver:webdriver实例执行用户操作
ActionChains用户生成用户的行为:所有的对象都存储在actionchains对象。通过perform执行存储的行为。
perform()
执行所有存储在ActionChains对象中的行为。perform是ActionChains类提供的方法,一般与ActionChains()配合使用。
执行结果
2、double_click()
鼠标双击的应用场景:查看图片,双击选定文字等
程序运行截图
3、click_and_hold()
运行结果截图
鼠标的移动
鼠标移动到距离当前元素(x,y)-----------------------------move_by_offset(xoffset,yoffset)
鼠标移动到某个元素--------------------------------------------move_to_element(movEelemt)
效果如下:http://www.cnblogs.com/mengyu/p/6901489.html
关于(x,y)移动
移动前位置
移动后位置
相差(-311,-11)
鼠标拖曳
将某个元素拖到某个元素然后放开
drag_and_drop(source,target)
将某个元素拖到某个位置放开
drag_and_drop_by_offset(source,xoffset,yoffset)
通过move_to_element()和click_and_hold()实现鼠标拖曳操作
上图,移动这行代码修改为:ActionChains(driver).move_to_element(target).release().perform()
加了个release方法,讲鼠标释放,不然拖放动作完成后,鼠标还是按在元素上
发现了一个讲解超详细的博客http://www.cnblogs.com/mengyu/p/6901489.html
本文参考了《selenium自动化实战基于Python》以及http://www.cnblogs.com/mengyu/p/6901489.html