通过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. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'bireportSqlSessionFactory' defined in URL

    报错如下: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'birepo ...

  2. Several ports (8005, 8080, 8009) required

    Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are already in use. The ...

  3. Gym 100851A Adjustment Office (思维)

    题意:给定一个 n*n 的矩阵,然后有 m 个询问,问你每一行或者每一列总是多少,并把这一行清空. 析:这个题不仔细想想,还真不好想,我们可以根据这个题意,知道每一行或者每一列都可以求和公式来求,然后 ...

  4. MessageFomat学习

    MessageFomat 提供了一种以与语言无关的方式生成连接消息的方法. 用它来构造消息,显示给最终用户. 1.MessageFormat的格式 MessageFormatPattern:Forma ...

  5. LeetCode: 412 Fizz Buzz(easy)

    题目: Write a program that outputs the string representation of numbers from 1 to n. But for multiples ...

  6. 如何用纯js做一个大富翁游戏

    下面这张是效果图: 先立个flag,一个星期内把这个坑填了

  7. HDU5894【组合数学】

    题意: 现在 m个考生人需要坐在有n个座位的圆桌上. 你需要安排位置,使得任意两个考生之间相距至少k个位置. 桌子有编号,考生a和b交换位置视作一种方案,问有多少方案,mod 1e9+7. (0 &l ...

  8. TRANSFORM_TEX是做什么的

    简单来说,TRANSFORM_TEX主要作用是拿顶点的uv去和材质球的tiling和offset作运算,确保材质球里的缩放和偏移设置是正确的. (v.texcoord就是顶点的uv) 而_MainTe ...

  9. P5137 polynomial(分治)

    传送门 神仙--这题有毒-- 一直在那里考虑没有逆元怎么办然后考虑解exgcd巴拉巴拉 最后只好看题解了 而且这题龟速乘都不行--得用代码里那种叫人半懂不懂的方式取模-- //minamoto #in ...

  10. IQueryable 和IEnumberable的区别

    一.IEnumerable接口 公开枚举器,该枚举器支持在指定类型的集合上进行简单的迭代.即:实现了此接口的object,就可以使用foreach遍历该object: 二.IQueryable 接口 ...