selenium-Python之鼠标事件
通过click()来模拟鼠标的单击操作,鼠标还具有鼠标右击,双击,悬停甚至鼠标拖动等功能。在webdriver中,将这些鼠标操作方法封装在ActionChains类提供。
ActionChains类提供鼠标的常用方法:
1)perform():执行所有ActionChains中存储的行为
2)context_click():右击
3)double_click():双击
4)drag_and_drop():拖动
5)move_to_element(): 鼠标悬停
1.鼠标右击操作
对于ActionChains类所提供的的鼠标方法与click()方法的用法有所不同。
代码:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Firefox()
driver.get("http://192.168.xxx.xxxx:1080/")
#定位到要右击的元素
right_click = driver.find_element_by_xpath("/html/body/nav/ul/li[5]/a")
#对定位到的元素执行鼠标右键操作
ActionChains(driver).context_click(right_click).perform()
driver.quit()
注:
1.from selenium webdriver import ActionChains 导入提供鼠标操作的ActionChains类。
2.ActionChains(driver)调入ActionChains()类,将浏览器驱动driver作为参数传入。
3.contex_click()方法用于模拟鼠标右键操作,在调用时需要指定元素定位。
4.perform()执行所有ActionChains中存储的行为,可以理解为对整个操作的提交动作
2.鼠标悬停
鼠标悬停弹出下栏菜单是一个常见的功能设计
move_to_element()方法可以模拟鼠标悬停的动作,其用法与context_click()相同。
3.鼠标双击操作
double_click()方法用于模拟鼠标双击操作。
4.鼠标拖放操作
drag_and_drop(coure,target)在源元素上按住鼠标左键,然后移动到目标元素上释放。
1.soure()鼠标拖放的源元素。
2.target:鼠标释放的目标元素
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Firefox()
driver.get("http://192.168.10.61:1080/")
#定位到要右击的元素
right_click = driver.find_element_by_xpath("/html/body/nav/ul/li[5]/a")
#对定位到的元素执行鼠标右键操作
ActionChains(driver).context_click(right_click).perform()
above = driver.find_element_by_xpath("/html/body/nav/ul/li[1]/a")
#对定位的元素执行悬停操作
ActionChains(driver).move_to_element(above).perform()
#定位到要悬停的元素
double_click=driver.find_element_by_xpath("/html/body/nav/ul/li[2]/a")
#对定位的元素执行双击操作
ActionChains(driver).double_click(double_click).perform()
#定位元素的原位置
element = driver.find_element_by_xpath("/html/body/nav/ul/li[3]/a")
#定位元素要移动到的目标位置
target = driver.find_element_by_xpath("/html/body/nav/ul/li[4]/a")
#执行元素的拖放操作
ActionChains(driver).drag_and_drop(element,target).perform()
driver.quit()
最新文章
- linux zip命令使用
- MVC4 code first 增加属性,对应自动修改列的方法笔记
- 8、网页制作Dreamweaver(jQuery基础:安装、语法)
- phpstorm 2016.2 的最新破解方法(截止2016-8-1)
- Spark Streaming揭秘 Day13 数据安全容错(Driver篇)
- xml学习篇(二) ----JSON 和XML对比
- 在msvc中使用Boost.Spirit.X3
- Qt 内存管理机制
- win8.1下安装ubuntu 14.0 4LTS
- Angular 框架下ng-repeat内部使用tooltip插件的办法
- react组件生命周期
- 20175320 2018-2019-2 《Java程序设计》第7周学习总结
- 什么是 superset
- adapter.notifydatasetchanged()没有效果
- 前端-JavaScript1-1——JavaScript简介
- ui设计学习路线图分享送给初学者
- GoDaddy Linux主机支持机房的更换
- Win10+VMplayer12中U盘无法挂载解决
- java的两种冒泡算法
- #ifdef和#if defined的差别