(一) 前言

Webdriver高级应用的API,允许我们模拟简单到复杂的键盘和鼠标事件,如拖拽操作、快捷键组合、长按以及鼠标右键操作,都是通过使用webdriver的Python API 中的ActionChains类实现的。

调用ActionChains类方法时,不会立即执行,而是将所有操作都存放在一个队列里,当调用perform()方法时,队列里的操作会依次执行

(二) 与键盘和鼠标事件有关的一些重要的方法

方法

简单说明

click(on_element=None)

单击元素

on_element:指被点击的元素,如果该参数为none,将单击当前鼠标所在位置

click_and_hold(on_element=None)

对元素按住鼠标左键

on_element:指要按住鼠标左键的元素,如果该参数为none,将单击当前鼠标所在位置。

double_click(on_element=None)

双击元素

on_element:只要双击的元素,如果该参数为none,将单击当前鼠标所在位置

drag_and_drop(source, target)

鼠标拖动

Source:鼠标拖动的元素

Target:鼠标释放的目标元素

key_down(value, element=None)

按住某个键,而不释放,用于修饰键(ctrl、alt和shift)

Vakue:指要按住的键,值在Keys类中定义

element:指按键触发的目标元素,如果为none,则在当前焦点位置触发。

key_up(value, element=None)

释放修饰键

Vakue:指要按住的键,值在Keys类中定义

element:指按键触发的目标元素,如果为none,则在当前焦点位置触发。

move_to_element(to_element)

将鼠标移到指定元素的中央

to_element:指定元素

perform()

提交已保存的操作

release(on_element=None)

释放鼠标

on_element:被鼠标释放的元素

send_keys(keys_to_send)

对当前焦点元素的键盘操作

keys_to_send:键盘的输入值

send_keys_to_element(element, keys_to_send)

对指定元素的键盘操作

element:指定元素

keys_to_send:键盘的输入值

(三) 示例(键盘事件)

 from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
from selenium.webdriver.common.keys import Keys driver = webdriver.Chrome()
driver.implicitly_wait(20)
driver.maximize_window()
driver.get('https://www.cnblogs.com/')
#找找看搜索框
search_file = driver.find_element_by_css_selector('#zzk_q')
#谷歌搜索框
search_file_gg = driver.find_element_by_css_selector('#google_search_q') search_file.send_keys('测试')
#ctrl+a
ActionChains(driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()
#ctrl+c
ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()
##ctrl+v
ActionChains(driver).key_down(Keys.CONTROL).send_keys_to_element(search_file_gg,'v').perform()
#ctrl+a
ActionChains(driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()
#ctrl+x
ActionChains(driver).key_down(Keys.CONTROL).send_keys('x').key_up(Keys.CONTROL).perform()
#ctrl+v
ActionChains(driver).key_down(Keys.CONTROL).send_keys_to_element(search_file,'v').key_up(Keys.CONTROL).perform()
#回车
ActionChains(driver).send_keys(Keys.ENTER).perform() driver.quit()

(四) 示例(鼠标事件)

 from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver driver = webdriver.Chrome()
driver.implicitly_wait(20)
driver.maximize_window()
driver.get('https://www.cnblogs.com/')
#编程语言
program_lan = driver.find_element_by_xpath('//li[@id="cate_item_2"]/a')
#编程语言下的小类Python
program_py = driver.find_element_by_xpath('//li/a[@href="/cate/python/"]')
#鼠标先移动到“编程语言”上,然后点击Python
ActionChains(driver).move_to_element(program_lan).click(program_py).perform() driver.quit()

(五) 查看Python selenium API的说明文档

点击下面的这个(或者也可以通过命令启动python -m pydoc -p 3333 ,-p指端口号(自定义一个)),然后在浏览器登录后(http://localhost:3333/),输入selenium进行查询

Python+Selenium笔记(十四)鼠标与键盘事件的更多相关文章

  1. python 学习笔记十四 jQuery案例详解(进阶篇)

    1.选择器和筛选器 案例1 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  2. Selenium:浏览器及鼠标、键盘事件

    参考文档:WebDriver官方文档,下载链接:http://download.csdn.net/detail/kwgkwg001/4004500 虫师:<selenium2自动化测试实战-基于 ...

  3. Selenium WebDriver中一些鼠标和键盘事件的使用

    转自:http://www.ithov.com/linux/133271.shtml 在使用 Selenium WebDriver 做自动化测试的时候,会经常模拟鼠标和键盘的一些行为.比如使用鼠标单击 ...

  4. 转:总结Selenium WebDriver中一些鼠标和键盘事件的使用

    在使用 Selenium WebDriver 做自动化测试的时候,会经常模拟鼠标和键盘的一些行为.比如使用鼠标单击.双击.右击.拖拽等动作:或者键盘输入.快捷键使用.组合键使用等模拟键盘的操作.在 W ...

  5. 总结Selenium WebDriver中一些鼠标和键盘事件的使用

    在使用 Selenium WebDriver 做自动化测试的时候,会经常模拟鼠标和键盘的一些行为.比如使用鼠标单击.双击.右击.拖拽等动作:或者键盘输入.快捷键使用.组合键使用等模拟键盘的操作.在 W ...

  6. (转)python selenium-webdriver 元素操作之鼠标和键盘事件

    参考资料:https://blog.csdn.net/zh175578809/article/details/76767748 参考资料2:https://blog.csdn.net/qq_41817 ...

  7. Selenium(五)鼠标和键盘事件

    1.模拟鼠标找到大分类下的子分类.以网易严选为例. 如果直接找到  坚果炒货 这个元素,然后点击它来实现跳转,是会报错的. 模拟鼠标停留--点击行为:  页面已成功跳转 2.键盘事件 模拟搜索操作: ...

  8. Python+Selenium笔记(四):unittest的Test Suite(测试套件)

    (一) Test Suite测试套件 一个测试套件是多个测试或测试用例的集合,是针对被测程序的对应的功能和模块创建的一组测试,一个测试套件内的测试用例将一起执行. 应用unittest的TestSui ...

  9. python学习笔记(十 四)、web.py

    使用web.py 通过python进行网页的编写,下面我们来简单了解一哈web.py 的使用 1 url处理 使用特定的url结构来解析我们发送的请求.如下面所示: urls = ( '/login' ...

  10. python学习笔记十四:wxPython Demo

    一.简介 wxPython是Python语言的一套优秀的GUI图形库,允许Python程序员很方便的创建完整的.功能键全的GUI用户界面. wxPython是作为优秀的跨平台GUI库wxWidgets ...

随机推荐

  1. Sharding-jdbc(一)分库分表理解

    1.什么是分库分表 所谓的分库分表就是数据的分片(Sharding). 2.为什么需要分库分表 因为随着公司的业务越来越大,对于现成单机单个应用瓶颈问题,对数据持久化硬盘如何进行扩容. 可以从4个方面 ...

  2. WTF小程序之原生遇见mpvue

    事情是这样的,我们有一个原生(wxml,wxss,js,json)写的小程序,要加入一个新的模块,并且时间比较紧张.所以我们选择了采用mpvue开发一个分包(subpackage),加入到原生小程序中 ...

  3. android app性能优化大汇总

    这里根据网络上各位大神已经总结的知识内容做一个大汇总,作为记录,方便后续“温故知新”. 性能指标: (1)使用流畅度:  图片处理器每秒刷新的帧数(FPS),可用来指示页面是否平滑的渲染.高的帧率可以 ...

  4. 一口一口吃掉Volley(三)

    欢迎访问我的个人博客转发请注明出处:http://www.wensibo.top/2017/02/17/一口一口吃掉Volley(三)/ 学习了一口一口吃掉Volley(二)之后,你应该已经学会了如何 ...

  5. lucene 初探

    前言: window文件管理右上角, 有个搜索功能, 可以根据文件名进行搜索. 那如果从文件名上判断不出内容, 我岂不是要一个一个的打开文件, 查看文件的内容, 去判断是否是我要的文件? 几个, 十几 ...

  6. mysql pdo设置显示报错

    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);    

  7. MFC RichText 滚动条问题

    一共涉及两个问题: 1.如何更加轻快的在RichText不覆盖之前的文本而添加新的文本 CString text("add text\n"); //想插入的文本,为了使下次输入我们 ...

  8. C# Azure-让http自动跳转到https链接

    在项目的web.config下面加上下面的配置: <rewrite> <rules> <clear /> <rule name="Redirect ...

  9. 手把手教你实现自己的abp代码生成器

    代码生成器的原理无非就是得到字段相关信息(字段名,字段类型,字段注释等),然后根据模板,其实就是字符串的拼接与替换生成相应代码. 所以第一步我们需要解决如何得到字段的相关信息,有两种方式 通过反射获得 ...

  10. .Net Core使用Socket与树莓派进行通信

    前言 去年买的树莓派一直放在抽屉里吃灰,前些阵子Debian 9发布,也不出意外的支持了树莓派. 于是重新拿出读卡器又重新了装上了Debian桌面版系统. 介绍 现在这个东西目前的程度只是了解一下Py ...