鼠标操作

现在的Web产品提供了丰富的鼠标交互方式,例如鼠标右击、双击、悬停、甚至是鼠标拖动等功能,在Webdriver中,将这些关于鼠标操作的方法封装在ActionChains类提供。

1.鼠标右击操作

from selenium import webdriver
# 引入ActionChains类
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep driver=webdriver.Firefox()
driver.get("http://www.baidu.com")
#...... # 定位到要右击的元素
element=driver.find_element_by_css_selector("#kw") #右击操作
ActionChains(driver).context_click(element).perform()
#......
  • from selenium.webdriver import ActionChains,导入提供鼠标操作的ActionChains类
  • ActionChains(driver),调用ActionChains()类,将浏览器驱动driver作为参数传入
  • context_click(element),context_click()方法用于模拟鼠标右键操作,在调用时需要制定元素定位
  • perform(),执行所有ActionChains中存储的行为,可以理解成是对整个操作的提交动作

2.鼠标悬停

#......
# 定位到要悬停的元素
element=driver.find_element_by_css_selector("#kw")
#鼠标悬停
above=driver.find_element_by_css_selector(".pf")
ActionChains(driver).move_to_element(above).perform()
#......

3.鼠标双击操作

#......
# 定位到要双击的元素
element=driver.find_element_by_css_selector("#kw")
#双击操作
ActionChains(driver).double_click(element).perform()
#......

4.鼠标拖放操作

#......
# 定位元素的原位置
element=driver.find_element_by_id("xx")
# 定位元素要移动的目标位置
target==driver.find_element_by_id("xx")
# 执行元素的拖放操作
ActionChains(driver).drag_and_drop(element,target).perform()
#......

drag_and_drop(source,target)在源元素上按住鼠标左键,然后移动到目标元素上释放

  • source:鼠标移动的源元素
  • target:鼠标释放的目标元素

键盘事件

Keys()类提供了键盘上几乎所有按键的方法。

from selenium import webdriver
# 引入Key模块
from selenium.webdriver.common.keys import Keys
from time import sleep driver=webdriver.Firefox()
driver.get("http://www.baidu.com/") # 输入框输入内容
driver.find_element_by_css_selector("#kw").send_keys("pythonn") # 删除多输入的一个n
driver.find_element_by_css_selector("#kw").send_keys(Keys.BACK_SPACE) # 输入空格键+“教程”
driver.find_element_by_css_selector("#kw").send_keys(Keys.SPACE)
driver.find_element_by_css_selector("#kw").send_keys("教程") # ctrl+a全选输入框内容
driver.find_element_by_css_selector("#kw").send_keys(Keys.CONTROL,'a') # ctrl+c复制输入框内容
driver.find_element_by_css_selector("#kw").send_keys(Keys.CONTROL,'c') # ctrl+x剪切输入框内容
driver.find_element_by_css_selector("#kw").send_keys(Keys.CONTROL,'x') # ctrl+v粘贴内容到输入框
driver.find_element_by_css_selector("#kw").send_keys(Keys.CONTROL,'v') # 通过回车键代替单击操作
driver.find_element_by_css_selector("#su").send_keys(Keys.ENTER) driver.quit()

在使用键盘方法前需要先导入Keys类

以下为常用的键盘操作

代码 含义
send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
send_keys(Keys.SPACE) 空格键(Space)
send_keys(Keys.TAB) 制表键(Tab)
send_keys(Keys.ESCAPE) 回退键(Esc)
send_keys(Keys.eNTER) 回车键(Enter)
send_keys(Keys.CONTROL,'a') 全选(Ctrl+A)
send_keys(Keys.CONTROL,'c') 复制(Ctrl+C)
send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X)
send_keys(Keys.CONTROL,'v') 粘贴(Ctrl+(Ctrl+A))
send_keys(Keys.F1) 键盘F1
......  
send_keys(Keys.F12) 键盘F12

Python+selenium鼠标、键盘事件的更多相关文章

  1. Python - selenium_WebDriver 鼠标键盘事件

    from selenium import webdriver #引入ActionChains类 提供了鼠标的操作方法 from selenium.webdriver.common.action_cha ...

  2. 自动化测试基础篇--Selenium鼠标键盘事件

    摘自https://www.cnblogs.com/sanzangTst/p/7477382.html 前面几篇文章我们学习了怎么定位元素,同时通过实例也展示了怎么切换到iframe,怎么输入用户名和 ...

  3. Python+Selenium学习--键盘事件

    场景 我们在实际的测试工作中,有时候需要使用tab键将焦点移动到下一个元素,用于验证元素的排序是否正确.webdriver的Keys()类提供键盘上所有的操作,甚至可以模拟一些组合键的操作,如Ctrl ...

  4. python selenium鼠标键盘操作(ActionChains)

    用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击.双击.点击鼠标右键.拖拽等等.而selenium给我们提供了一个类来处理这类事件--ActionChains sele ...

  5. Python+selenium之键盘事件

    keuys()类提供键盘上所有的按键方法.send_keys()方法可以用来模拟键盘输入. from selenium import webdriver from selenium.webdriver ...

  6. python selenium(键盘事件 Keys 类)

    1.导入Keys类 from selenium.webdriver.common.keys import Keys Keys.BACK_SPACE  删除输入框内结尾的单个字符 Keys.SPACE  ...

  7. Python——pyHook监听鼠标键盘事件

    pyHook包为Windows中的全局鼠标和键盘事件提供回调. 底层C库报告的信息包括事件的时间,事件发生的窗口名称,事件的值,任何键盘修饰符等. 而正常工作需要pythoncom等操作系统的API的 ...

  8. Selenium4.0+Python3系列(四) - 常见元素操作(含鼠标键盘事件)

    一.写在前面 上篇文章介绍的是关于浏览器的常见操作,接下来,我们将继续分享关于元素的常见操作,建议收藏.转发! 二.元素的状态 在操作元素之前,我们需要了解元素的常见状态. 1.常见元素状态判断,傻傻 ...

  9. Linux 模拟 鼠标 键盘 事件

    /************************************************************************ * Linux 模拟 鼠标 键盘 事件 * 说明: ...

  10. Tkinter 鼠标键盘事件(一)

    一: 鼠标事件 <Button-1>                                                                     鼠标左键单击 ...

随机推荐

  1. Kruskal 2015百度之星初赛2 HDOJ 5253 连接的管道

    题目传送门 /* 最小生成树(Kruskal):以权值为头,带入两个端点,自然的排序;感觉结构体的并查集很好看 注意:题目老头要的是两个农田的高度差,中文水平不好,题意理解成和平均值的高度差! */ ...

  2. Invitation Cards POJ 1511 SPFA || dij + heap

    http://poj.org/problem?id=1511 求解从1去其他顶点的最短距离之和. 加上其他顶点到1的最短距离之和. 边是单向的. 第一种很容易,直接一个最短路, 然后第二个,需要把边反 ...

  3. 组件的 render 方法

    React.js 中一切皆组件,用 React.js 写的其实就是 React.js 组件.我们在编写 React.js 组件的时候,一般都需要继承 React.js 的 Component(还有别的 ...

  4. MVC:html动态追加行及取值

    先一个button   id=addRow 点击事件进行添加 $("#addRow").bind("click", function () { var addH ...

  5. go获取当前执行的位置程序

    func getCurrentPath() string { _, filename, _, ok := runtime.Caller(1) var cwdPath string if ok { cw ...

  6. AJPFX关于集合的几种变量方式

    package com.java.test; import java.util.ArrayList;import java.util.Enumeration;import java.util.Iter ...

  7. JS进阶-闭包的几种常见形式

    作用域链: //作用域链 var a = 1; function test() { var b =2; return a; } alert(test());//弹出1: alert(b);//不能获取 ...

  8. 【数据分析 R语言实战】学习笔记 第五章 数据的描述性分析(下)

    5.6 多组数据分析及R实现 5.6.1 多组数据的统计分析 > group=read.csv("C:/Program Files/RStudio/002582.csv") ...

  9. TFS2010升级至TFS2013完全指南(更换服务器)

    一.背景:         公司已使用tfs2010很长时间,目前随着公司的发展,项目越来越少,而产品越来越多,采用的开发模式,也逐渐从瀑布式.迭代式转向敏捷开发.为了更好的支持产品研发,决定将tfs ...

  10. 原创:四种Linux系统开机启动项优命令超给力超详细详解

    老葵花哥哥又开课了 接下来是你们的齐天大圣孙悟空给你们带来的详细版Linux系统开机启动优化四种命令 第一种方法是很正常的 第二种有点难理解 第三种来自我的一个奇思妙想 本文档秉承 不要钱也不要臀部的 ...