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

selenium-Python之鼠标事件的更多相关文章

  1. Selenium WebDriver 中鼠标事件(全)

    Selenium WebDriver 中鼠标事件(全) 鼠标点击操作  鼠标点击事件有以下几种类型:  清单 1. 鼠标左键点击   Actions action = new Actions(driv ...

  2. python+selenium三:鼠标事件与键盘事件

    1.鼠标事件:# 每个模拟事件后需加.perform() 才会执行# context_click() 右击# double_click() 双击# drag_and_drop(source, targ ...

  3. python+selenium_鼠标事件

    引言--在实际的web产品测试中,对于鼠标的操作,不单单只有click(),有时候还要用到右击.双击.拖动等操作,这些操作包含在ActionChains类中. 一.ActionChains类中鼠标操作 ...

  4. Selenium WebDriver 中鼠标事件

    鼠标点击操作  鼠标点击事件有以下几种类型:  清单 1. 鼠标左键点击   Actions action = new Actions(driver);action.click();// 鼠标左键在当 ...

  5. Selenium+Java(九)Selenium键盘与鼠标事件

    一.键盘事件 ctrl+a driver.findElement(By.id("kw")).sendKeys(Keys.CONTROL, "a"); ctrl+ ...

  6. Selenium WebDriver中鼠标事件

    鼠标点击操作  鼠标点击事件有以下几种类型:  清单 1. 鼠标左键点击   Actions action = new Actions(driver);action.click();// 鼠标左键在当 ...

  7. selenium+python 移动鼠标方法

    from selenium import webdriver from selenium.webdriver.common.keys import Keys import time driver=we ...

  8. selenium 3.0鼠标事件 (java代码)

    注意:ActionChains下相关方法在当前的firefox不工作,建议使用谷歌浏览器. public static void main(String[] args) throws Interrup ...

  9. 【Selenium专题】鼠标键盘事件

    引用包来自selenium-java-2.23.1.jar 调用以下代码时,需要引入actions类,以java为例: import org.openqa.selenium.interactions. ...

  10. Python+Selenium学习--鼠标事件

    场景 前景讲解了鼠标的click()事件,而我们在实际的web产品测试中,有关鼠标的操作,不仅仅只有单击,有时候还包括右击,双击,拖动等操作,这些操作包含在ActionChains类中. Action ...

随机推荐

  1. Ubuntu install JDK

    1.#下载JDK,记住保存的目录 2. sudo mkdir /usr/java 3. sudo tar zxvf jdk-7u75-linux-x64.tar.gz -C /usr/java 4. ...

  2. asp.net中FileUpload得到上传文件的完整路径

    asp.net中FileUpload得到上传文件的完整路径 Response.Write("完整路径:" + Server.MapPath(FileUpload1.PostedFi ...

  3. storyBoard学习教程二(页面跳转)

    本篇是接着上一篇 storyBoard 学习教程一 的补充,有过storyBoard 编程经验的伙伴还是不要阅读本篇博客了,我自己认为,太基础太简单了,为了方便别人学习使用,我还是详细的做了这篇教程. ...

  4. Java: JavaMail 初试(一)

    前言:以前的我,很喜欢写东西,写一写所想所见所闻所感,但是工作之后,总不能写出让自己满意的文章,突发奇想,能否利用写博客的时机,将其写成类似散文似的博文呢?哈哈... 邮件功能尝试:作为一个小菜鸟,对 ...

  5. matlab 2017版本修改帮助文档为离线

    安装matlab2017a后发现,帮助文档为在线版本,必须关联账号. 经过查询资料,帮助文档默认是使用web, on mathworks.com 可以将帮助文档改为离线版本. 具体修改方法: Pref ...

  6. 标准C++中的string

    转自http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 要想使用标准C++中string类,必须要包含 #include & ...

  7. 【Hadoop】MapReduce笔记(四):MapReduce优化策略总结

    Cloudera 提供给客户的服务内容之一就是调整和优化MapReduce job执行性能.MapReduce和HDFS组成一个复杂的分布式系统,并且它们运行着各式各样用户的代码,这样导致没有一个快速 ...

  8. Java代码加密与反编译(一):利用混淆器工具proGuard对jar包加密

    Java 代码编译后生成的 .class 中包含有源代码中的所有信息(不包括注释),尤其是在其中保存有调试信息的时候.所以一个按照正常方式编译的 Java .class 文件可以非常轻易地被反编译.通 ...

  9. 执行多个Sql脚本,Sqlplus

    1.先制作需要执行的Sql文件list CMD 中输入[dir E:\FolderName >E:\ExcuteSqlList.txt ] 2.根据ExcuteSqlList.txt 中的文件名 ...

  10. 豆瓣api获取图片403

    1.问题描述 豆瓣的图片资源在网页中不能正常显示,403禁止访问,把地址放到浏览器中就可以正常访问了? 原因是豆瓣现在有防盗链 2.解决问题 在页面中加上 <meta name="re ...