通过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()

最新文章

  1. linux zip命令使用
  2. MVC4 code first 增加属性,对应自动修改列的方法笔记
  3. 8、网页制作Dreamweaver(jQuery基础:安装、语法)
  4. phpstorm 2016.2 的最新破解方法(截止2016-8-1)
  5. Spark Streaming揭秘 Day13 数据安全容错(Driver篇)
  6. xml学习篇(二) ----JSON 和XML对比
  7. 在msvc中使用Boost.Spirit.X3
  8. Qt 内存管理机制
  9. win8.1下安装ubuntu 14.0 4LTS
  10. Angular 框架下ng-repeat内部使用tooltip插件的办法
  11. react组件生命周期
  12. 20175320 2018-2019-2 《Java程序设计》第7周学习总结
  13. 什么是 superset
  14. adapter.notifydatasetchanged()没有效果
  15. 前端-JavaScript1-1——JavaScript简介
  16. ui设计学习路线图分享送给初学者
  17. GoDaddy Linux主机支持机房的更换
  18. Win10+VMplayer12中U盘无法挂载解决
  19. java的两种冒泡算法
  20. #ifdef和#if defined的差别

热门文章

  1. JS获取元素的offsetTop,offsetLeft等相关属性
  2. error:未定义的引用
  3. 3、webpack打包出的文件解析
  4. VR视频原理
  5. 详细讲解:零知识证明 之 zk-SNARK 开篇
  6. E20181030-hm
  7. Codeforces Round #439 (Div. 2)C - The Intriguing Obsession(简单dp)
  8. unity2d 动画
  9. XCode5 编译ffmpeg流程
  10. mysql之SQL入门与提升(四)——终结篇,函数