Python Selenium自动化测试框架 鼠标+键盘事件_白码会说的博客-程序员秘密

技术标签: python  自动化测试  selenium  点击事件  软件测试  

Time will tell.

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

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

1、键盘和鼠标事件的一些重要方法

方法 简单说明
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:键盘的输入值。

2、键盘事件

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

3、鼠标事件

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

4、查看Python selenium API说明文档

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


学习犹如逆水行舟,不进则退。

测试工程师职业发展路线:
功能测试 — 接口测试 — 自动化测试 — 测试开发 — 测试架构师

如果你对Python自动化软件测试、面试题等更多内容感兴趣,在这里推荐一个学习资料分享扣裙:175317069。有各项已整理好的测试学习资源,也有行业深潜多年的技术人分析讲解。

作为测试工程师,不断提升自己工作能力是提高薪资待遇最重要的基础。另外也要注重学习, IT 行业是个不断发展、更新迭代相对较快的行业,技术具有明显的时代特征,所以紧跟时代技术的发展才能让自己不掉队,在职场当中具有足够的竞争力。

觉得还不错就【点赞】、【评论】、【关注】吧~

Time will tell.(时间会说明一切)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/kami_ochin_akane/article/details/110528166

智能推荐

apk反编译后安装不了,得重新签名_杭小五的博客-程序员秘密_小米 反编译 无法安装

最近在给apk反编译后重新打包再安装的时候发现安装不了了,相信有不少同学应该和我遇到同样的问题,前面我已经介绍过如何反编译apk,详见 https://mp.csdn.net/postedit/93614356 现在就说一下如何给apk签名。第一步:确保电脑上已安装jdk,因为我们需要jdk/bin/目录下的keytool工具和jarsigner工具首先打开cmd,输入指令keyt...

python—抽奖小程序_菜鸟上路_lbz的博客-程序员秘密_python抽奖小程序

用到的库:random #返回随机生成的一个数tkintertimethreadingimport randomfrom tkinter import *import timeimport threadingapp=Tk()app.title('抽奖小程序')app.geometry('370x150')v1=StringVar()v2=StringVar()v3=St...

vim编码转换和文件模式类型转换_mergerly的博客-程序员秘密_vim 切换到sjis编码格式

如果显示乱码1、修改终端编码,可以设置终端或者在vim中:set termencoding=utf-82、文件内部显示编码:set encoding=utf-83、文件编码修改:set fileencodings=utf-8 ,然后 w (存盘)一下即可转化为 utf8 格式,:set fileencodings=cp936  ,然后 w (存盘)一下即可转化为 ANS

终于,我也到了和 Eclipse 说再见的时候,难说再见_CSDN资讯的博客-程序员秘密

作者 |程序员小跃责编 | 夕颜头图 | CSDN下载自视觉中国出品 | 程序员秘密2011-2020,一段旅程的结束,意味着另一端旅程的全新开始。优秀的赛车手,除了过硬的技术之外,...

STM32 固件库外设 GPIO 讲解(关于 GPIO 寄存器讲解)_YVinci•的博客-程序员秘密_gpioa与gpiob的区别

GPIO 外设讲解通过博主上一篇博客,相信大家已经初步了解到了对于 STM32 的控制原理,但是 STM32 到外设 / 引脚有这么多,是要一个一个的去记住它的地址?或者每一次使用一个外设都要看一下数据手册?这样也太麻烦了吧,所以 STM32 便有固件库来方便大家使用,就不用去记那么多的外设地址了。固件库固件库原理是什么?固件库怎么使用?首先,固件库的原理其实是和上一篇文章讲到的原理是一样的。上图可以看到:其实,固件库就是将基地址宏定义成一个比较好记的名字,比如 GPIOB 的基地址就直接使

随便推点

win7 32/64位系统安装ug nx4.0_oncealong的博客-程序员秘密_nx4安装选中文还是英文

英文教程来源:http://www.aame.in/2010/07/install-run-unigraphics-nx4-or-older-in.htmlhttp://nxway.blogspot.com/2007/11/youve-just-bought-your-laptop-and.html

【解决方案】用户名不在 sudoers 文件中。此事将被报告。_云雀叫了一整天啦的博客-程序员秘密

1. 问题: 执行 sudo 命令的时候, 报错了。如下例子:[[email protected] Code]$ sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc[sudo] zuoy 的密码:zuoy 不在 sudoers 文件中。此事将被报告。2. 原因: 当前用户不在sudo 用户组,需要先加入此用户...

Github大盘点:2021年最惊艳的38篇AI论文_机器学习社区的博客-程序员秘密_virtual-try-on-with-video

  新智元报道  来源:Github编辑:David【新智元导读】2021年是人工智能继续突飞猛进的一年。近日,Github上有人总结出了今年最有趣、最惊艳的38篇关于AI和机器学习论文,值得收藏。1、Zero-Shot Text-to-Image Generation https://arxiv.org/pdf/2102.12092.pdf  文本到图像的生成传统上侧重于为固定数据集的训练寻找更好的建模假设。本文描述了一种基于Trans

pycharm控制台中文乱码问题_weixin_33939843的博客-程序员秘密

pycharm控制台中文乱码问题一般是因为之前有配置保存到了文件里,C盘下.pycharm文件夹下有配置文件,删除文件后重装pycharm,配置会重置不过最后解决问题的做法是删除配置文件后,重新装了更新一版本的pycharm转载于:https://www.cnblogs.com/wangcp-2014/p/4844851.html...

为什么我们不建议使用函数模板具体化_Wayne_Mai的博客-程序员秘密

你有过使用了函数具体化模板却没有得到预期结果的经历吗?本文部分译自[Why Not Specialize Function Templates?]。具有一定英语阅读能力的读者强烈和强烈建议跳过此博客直接阅读原文。(http://www.gotw.ca/publications/mill17.htm#1)

faiss学习(二)另外两种基础索引,保存索引_胡晓天o0的博客-程序员秘密_faiss 保存

在上一篇文章里面的官方demo建立索引方式使用的是最基本的索引,这里在介绍两种基础索引更多索引类别1--更快的检索IndexIVFFlat官方介绍:为了加快搜索速度,可以将数据集分割成几部分。我们在d维空间中定义Voronoi单元格,并且每个数据库矢量都落入其中一个单元格中。在搜索时,只有查询x所在单元中包含的数据库向量y与少数几个相邻查询向量进行比较。(划分搜索空间)这是通过Inde...