前面例子中我们已经学习到可以用 click()来模拟鼠标的单击操作,而我们在实际的 web 产品测试中

发现,有关鼠标的操作,不单单只有单击,有时候还要和到右击,双击,拖动等操作,这些操作包含在
ActionChains 类中。
ActionChains 类鼠标操作的常用方法:
 context_click() 右击
 double_click() 双击
 drag_and_drop() 拖动
 move_to_element() 鼠标悬停在一个元素上
 click_and_hold() 按下鼠标左键在一个元素上
鼠标右击操作
context_click() 右键点击一个元素。

图3.4
如图3.x4, 假如一个web应用的列表文件提供了右击弹出快捷菜单的的操作。 可以通过context_click()
方法模拟鼠标右键,参考代码如下:
#引入 ActionChains 类
from selenium.webdriver.common.action_chains import ActionChains
...
#定位到要右击的元素
right =driver.find_element_by_xpath("xx")
#对定位到的元素执行鼠标右键操作
ActionChains(driver).context_click(right).perform()
....
from selenium.webdriver.common.action_chains import ActionChains
这里需要注意的是,在使用 ActionChains 类下面的方法之前,要先将包引入。
ActionChains(driver)
driver: wedriver 实例执行用户操作。
ActionChains 用于生成用户的行为;所有的行为都存储在 actionchains 对象。通过 perform()执行
存储的行为。
perform()
执行所有 ActionChains 中存储的行为。perfrome()同样也是 ActionChains 类提供的的方法,通常与
ActionChains()配合使用。
除了鼠标右击之外,ActionChains 类还提供了其它的比较复杂的鼠标方法。
鼠标双击操作
double_click(on_element)
双点击页面元素。例如:
#引入 ActionChains 类
from selenium.webdriver.common.action_chains import ActionChains
...
#定位到要双击的元素
double =driver.find_element_by_xpath("xxx")
#对定位到的元素执行鼠标双击操作
ActionChains(driver).double_click(double).perform()
对于操作系统的操作来说,双击使用相当频繁,但对于 web 应用来说双击的用户比较少,笔者唯一能
想到想的场景是地图程序(如 百度地图) ,可以通过双击鼠标放大地图。
鼠标拖放操作
drag_and_drop(source, target)
在源元素上按下鼠标左键,然后移动到目标元素上释放。
source: 鼠标按下的源元素。
target: 鼠标释放的目标元素。
鼠标拖放操作的参考代码如下:
#引入 ActionChains 类
from selenium.webdriver.common.action_chains import ActionChains
...
#定位元素的原位置
element = driver.find_element_by_name("xxx")
#定位元素要移动到的目标位置
target = driver.find_element_by_name("xxx")
#执行元素的移动操作
ActionChains(driver).drag_and_drop(element, target).perform()
鼠标移动上元素上
move_to_element()
模拟鼠标移动到一个元素上。
#引入 ActionChains 类
from selenium.webdriver.common.action_chains import ActionChains
...
#定位到鼠标移动到上面的元素
above = driver.find_element_by_xpath("xxx")
#对定位到的元素执行鼠标移动到上面的操作
ActionChains(driver).move_to_element(above).perform()
按下鼠标左键
click_and_hold()
按住鼠标左键在一个元素。
#引入 ActionChains 类
from selenium.webdriver.common.action_chains import ActionChains
...
#定位到鼠标按下左键的元素
left=driver.find_element_by_xpath("xxx")
#对定位到的元素执行鼠标左键按下的操作
ActionChains(driver).click_and_hold(left).perform()

转:python webdriver API 之鼠标事件的更多相关文章

  1. 转:python webdriver API 之操作测试对象

    一般来说,所有有趣的操作与页面交互都将通过 WebElement 接口,包括上一节中介绍的对象定位,以及本节中需要介绍的常对象操作.webdriver 中比较常用的操作元素的方法有下面几个: cle ...

  2. 转:python webdriver API 之简单对象的定位

    对象(元素)的定位和操作是自动化测试的核心部分,其中操作又是建立在定位的基础上的,因此元素定位就显得非常重要. (本书中用到的对象与元素同为一个事物)一个对象就像是一个人,他会有各种的特征(属性) , ...

  3. selenium python (三)鼠标事件

    # -*- coding: utf-8 -*-#鼠标事件 #ActionChains类中包括:                     # context_click()  右击:           ...

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

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

  5. python webdriver API学习笔记

    浏览器操作 driver.maximize_window() #浏览器最大化 driver.set_window_size(480,800) #设置浏览器宽,高 driver.back() & ...

  6. Python监听键盘和鼠标事件

    我们可以利用windows提供的api函数来实现对系统键盘事件和鼠标事件的监听,主要利用的是SetWindowsHookEx函数,这个函数可以允许调用者传入一个钩子函数也叫回调函数,当指定的事件发生时 ...

  7. 转:python webdriver API 之调用 JavaScript

    当 webdriver 遇到没法完成的操作时,笔者可以考虑借用 JavaScript 来完成,比下下面的例子,通过 JavaScript 来隐藏页面上的元素.除了完成 webdriver 无法完成的操 ...

  8. 转:python webdriver API 之下载文件

    webdriver 允许我们设置默认的文件下载路径.也就是说文件会自动下载并且存在设置的那个目录中.要想下载文件,首选要先确定你所要下载的文件的类型.要识别自动文件的下载类型可以使用 curl ,如图 ...

  9. 转:python webdriver API 之下拉框处理

    下拉框也是 web 页面上非常常见的功能,webdriver 对于一般的下拉框处理起来也相当简单,要想定位下拉框中的内容,首先需要定位到下拉框:这样的二次定位,我们在前面的例子中已经有过使用,下面通过 ...

随机推荐

  1. 发布(高程数据)服务,Service Editor界面无LERC格式选项

    [问题描述]: ArcGIS Server 发布(高程数据)服务,无 LERC格式选项,而官方帮助中发布流程提示需要选择LERC格式. [解决办法]: 需求:发布高程数据,ArcGIS Server版 ...

  2. 【转】C#中HttpWebRequest的用法详解

    本文实例讲述了C#中HttpWebRequest的用法.分享给大家供大家参考.具体如下: HttpWebRequest类主要利用HTTP 协议和服务器交互,通常是通过 GET 和 POST 两种方式来 ...

  3. ant

    condition逻辑判断: <project name="testCondition"> <target name="test"> & ...

  4. jframe去掉窗体

    jframe 去掉最大化 怎样去除JFrame上的三个按钮(最大化,最小化,关闭) myjframe.getRootPane().setWindowDecorationStyle(JRootPane. ...

  5. Xlib 窗口属性

    Xlib 窗口属性 转, 无法找到原作者 所有的 InputOutput 窗口都可以有零个或者多个像素的边框宽度,一个可选的背景,一个事件压制掩码(它压制来自孩子的事件传播),和一个 property ...

  6. 单片机与嵌入式 以及ARM DSP FPGA 几个概念的理解

    嵌入式设备一般要满足实时性的要求,而实时性是要求数据输入和输出的延时满足一定的要求.当然嵌入式一般都便携性都比PC要好,功能没有PC多,PC是通用,他是专用,一般只专注某些功能的实现,比如DSP专注数 ...

  7. Google 开源项目风格指南

    Python风格规范 分号 Tip 不要在行尾加分号, 也不要用分号将两条命令放在同一行. 行长度 Tip 每行不超过80个字符 例外: 长的导入模块语句 注释里的URL 不要使用反斜杠连接行. Py ...

  8. C code 字符串与整数的相互转化

    #include<stdio.h> int str_to_int(const char *str,int *num); void int_to_str(char str[],const i ...

  9. Unix网络编程(迭代服务器)

    #include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/soc ...

  10. 在Android Studio 中正确使用adil ”绝对经典“

    今天调用远程服务中遇到了一个问题,哎,调了2个小时,后来终于解决,总结来看还是对新的Android Studio 不够熟悉.那么....就可以睡觉啦!!! 在Android Studio中使用进程通信 ...