【如何学习Python自动化测试】—— 鼠标键盘操作

5 、 鼠标键盘操作

      在浏览器中,通常会用到鼠标来进行操作,比如右键菜单中选择一个操作,在 selenium 中提供了下列鼠标相关操作。
      ActionChains 类提供了以下方法:

  1. 点击鼠标:click()
  2. 右击鼠标:context_click()
  3. 双击鼠标:double_click()
  4. 拖拽元素:drag_and_drop()
  5. 长按鼠标:click_and_hold()
  6. 移动鼠标到元素上:move_to_element()
  7. 右击鼠标:context_click()
  8. 模拟键盘上下键滚动:send_keys(Keys.PAGE_DOWN) 或 send_keys(Keys.PAGE_UP)
  9. 模拟鼠标滚轮滚动:execute_script(“window.scrollTo(0, document.body.scrollHeight);”)

5.1 鼠标右击

      context_click()是Selenium库中的一个方法,它可以模拟鼠标右键点击操作。在浏览器中,右键点击会弹出一个菜单,该菜单显示了可用于该元素的所有操作。context_click()方法可用于执行此操作并选择要执行的操作。

      模拟用户在 LMD 登陆界面,在输入邮箱地址的输入框右键,但是这里本身没有定义右键,所以不能打开右键,而无法操作右键,如果在项目中有用到,那右键后的菜单也可以进行定位,并操作。示例:

from selenium import webdriver
driver=webdriver.Firefox()
driver.get ('http://www.chuangyijia.com/admin/login') driver.implicitly_wait(3)
test=driver.find_element_by_id('email')
找到要执行右键操作的元素ActionChains(driver).context_click(test).perform() 对被操作元素执行右键

注意事项:

  • context_click()方法需要使用ActionChains类,需要先导入该类:from selenium.webdriver.common.action_chains import ActionChains
  • 在右键点击后选择操作时,可以使用send_keys()方法模拟键盘按键操作。在这里,我们使用Keys类,该类提供了一些常用键的常量,例如:Keys.CONTROL表示Ctrl键。

5.2 鼠标双击

      double_click()是一个鼠标事件函数,它会在鼠标双击时被触发。双击事件是指用户快速连续点击鼠标左键两次,一般用于实现某些特殊操作或者进行快速编辑等操作。在双击事件中,第一次单击会触发单击事件,第二次单击会触发双击事件。

      在double_click()函数中,可以定义一些动作和操作,例如打开一个新窗口、删除一条记录、选择一个项等。它主要被用于图形用户界面(GUI)中,如各种框架和库中的图形库,如Tkinter、Qt、wxWidgets等。因为在GUI中,鼠标双击事件是一种非常常见的用户操作。

from selenium import webdriver
driver=webdriver.Firefox()
driver.get ('http://www.chuangyijia.com/admin/login') driver.implicitly_wait(3)
test=driver.find_element_by_id('email')
找到要执行右键操ActionChains(driver).double_click(test).perform() 对被操作元素执行双击

5.3 鼠标拖放

      在一些 web 页面中,一些菜单需要将鼠标放上去,才会显示它的子菜单,在这种情况下,自动化需要模拟人为将鼠标放到菜单上。
      move_to_element()方法是Selenium中模拟鼠标拖放操作的一种方法。它可以将鼠标指针移动到指定的元素上,然后按住鼠标左键拖动该元素到目标位置。
      下面通过百度页面来实现这个操作,在百度页面中,要对搜素的设置进行设置, 这种操作需要将鼠标放到页面的设置菜单中,才能看到搜索设置,才能进行下一步的
操作。代码如下:

driver.get('https://www.baidu.com')
打开百度页面seting=driver.find_element_by_link_text('设置')
找到设置ActionChains(driver).move_to_element(seting).perform() 将鼠标移动到设置菜单上
driver.find_element_by_link_text('搜索设置').click() 点击设置下的搜索设置

注意事项:

  • move_to_element()方法需要使用ActionChains类,需要先导入该类:from selenium.webdriver.common.action_chains import ActionChains
  • 在移动到源元素和目标元素时,可以使用find_element_by_xpath()方法或其他定位方法来定位元素。
  • click_and_hold()方法按下鼠标左键不释放,直到使用release()方法释放鼠标左键。

5.4 按键用法

      使用键盘时,需要导入 selenium.webdriver.common.keys 中的 Keys 模块。
      send_keys() 方法是Selenium WebDriver 中用于模拟输入的一种方法。它可以向指定的元素或当前活动的元素发送键盘输入,如文本、特殊字符、组合键等。
      下面代码模拟用户通过键盘向邮箱地址中输入一个数字。

driver.find_element_by_xpath('//form[@id="login"]/input[1]'). send_keys(Keys.NUMPAD3)
Keys.NUMPAD3 表示从键盘输入数字 3

      下面模拟操作 tab 键和 enter 键

driver.find_element_by_xpath('//form[@id="login"]/input[1]'). send_keys('lib@163.com')
输入邮箱driver.find_element_by_xpath('//form[@id="login"]/input[2]'). send_keys('12345678')
输入密码driver.find_element_by_xpath('//form[@id="login"]/input[2]'). send_keys(Keys.TAB)
按下 tab 键driver.find_element_by_xpath('//form[@id="login"]/button').send_keys(Keys.ENTER)
按下回车键

      通过上面的代码能够看出,输入邮箱和密码之后,按下 tab 键,操作会切换到登陆按钮上,然后在登陆按钮上模拟用户按下 enter 键。
      当然这样的操作需要按业务的顺序来的,否则会出错。

注意事项:

  • send_keys() 方法需要使用 WebElement 对象,需要先通过元素定位方法(如 find_element_by_xpath())获取该元素的 WebElement 对象。
  • send_keys() 方法可以一次性输入多个字符,使用逗号分隔,如 send_keys(“123”, “,”, “abc”) 将输入 “123,abc”。
  • send_keys() 方法还可以模拟各种键盘操作,如输入特殊字符、组合键等,具体可以参考 Selenium 官方文档或相关教程。

5.5 组合键

      在 web 页面使用键盘除了上面的操作之外,还可能会有其他操作,比如组合键。
      接下来,通过代码模拟用户在界面输入邮箱地址之后,使用 ctrl+a 的方式,将其全选, 然后在使用 ctrl+c 的方式将内容复制出来,登陆成功后,将复制的内容粘贴到创意列表的标题中。代码如下:

driver.find_element_by_xpath('//form[@id="login"]/input[1]'). send_keys('lib@163.com')
输入邮箱地址driver.find_element_by_xpath('//form[@id="login"]/input[1]'). send_keys(Keys.CONTROL,'a')
将输入的字符串使用 ctrl+a 键全选driver.find_element_by_xpath('//form[@id="login"]/input[1]'). send_keys(Keys.CONTROL,'c')
在按下 ctrl+c,将全选的内容复制到剪切板driver.find_element_by_xpath('//form[@id="login"]/input[2]'). send_keys('12345678')
输入密码driver.find_element_by_xpath('//button[contains(text(),"登录 ")]').click()
登陆#sleep(2)
driver.implicitly_wait(3)
driver.find_element_by_css_selector('#dashboard-menu > li:nth-child(2) > a:nth-child(1)').click()
点击待审核管理driver.find_element_by_css_selector('#input01').send_keys(Key s.CONTROL,'v')
在搜索栏中的标题输入框中,用 ctrl+v 粘贴到输入框

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/157572.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pandas数据清洗_Python数据分析与可视化

Pandas数据清洗 删除缺失值检测缺失值填充缺失值拉格朗日插值线性插值 在处理数据的时候,需要对数据进行一个清洗过程。清洗操作包括:空白行的删除、数据完整性检验、数据填充、插值等内容。 下面是数据清洗过程中使用的具体方法 删除缺失值 DataFram…

Go语言常用命令详解(三)

文章目录 前言常用命令go get示例参数说明 go install示例参数说明 go list示例 go mod示例参数说明 go work基本用法示例 go tool示例 go version示例 go vet示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命…

智能座舱架构与芯片- (14) 测试篇 上

一、 验证平台概要 1.1 测试软件方法论 “软件定义汽车” 的时代,软件在整车制造中的重要性日渐凸显。但不同于其他行业的软件开发,汽车行业有自己独特的软件开发要求。首先是需求严谨、需求层次复杂、需要通过专业的工具进行管理;其次开发…

数据中台之用户画像

用户画像应用领域较为广泛,适合于各个产品周期,从新用户的引流到潜在用户的挖掘、 从老用户 的培养到流失用户的回流等。通过挖掘用户兴趣、偏好、人口统计特征,可以 直接 作用于提升营销精准 度、推荐匹配度,最终提升产品服务和企业利润。还包括广告投放、产品布局和行业报…

从0开始学习JavaScript--深入理解JavaScript的async/await

JavaScript的异步编程在过去经历了回调地狱、Promise的引入,而今,通过async/await,让我们获得了更加优雅、可读性更高的异步编程方式。本文将深入探讨async/await的概念、用法,并通过丰富的示例代码展示其在实际应用中的威力。 理…

JVM垃圾收集器

什么是垃圾收集器 Java虚拟机的垃圾收集器是内存回收的具体实现,主要用于回收不再使用的对象,释放内存空间。Java虚拟机提供了多种垃圾收集器,不同的垃圾收集器适用于不同的场景和需求。 在C中,对象所占的内存在程序结束运行之前…

Windows to Go U盘系统制作(未测完成)

三、Windows U盘系统制作 1、下载windows镜像,并通过Windows To Go方式制作,具体选项参考下面截图 2、选择Windows版本 3、配置Windows 体验相关参数

C++ Qt TCP协议,处理粘包、拆包问题,加上数据头来处理

目录 前言: 场景: 原因: 解决: 方案2具体细节: 纯C服务端处理如下: Qt客户端处理如下: 前言: tcp协议里面,除了心跳检测是关于长连接操作的处理,这个在…

STM32通用定时器产生PWM信号

STM32通用定时器产生PWM信号 PWM信号stm32定时器PWM生成模式PWM配置基本步骤PWM周期计算CubeMX配置代码展现 本期内容我将展示使用STM32通用定时器产生PWM信号,这里以定时器3通道3为例 PWM信号 如果还不懂的话,可以看看 : “蓝桥杯单片机学习…

远程桌面访问MATLAB 2018B,提示License Manger Error -103,终极解决方案

通过远程桌面方位Windows Server系统下的MATLAB2018B,报错License Manger Error -103,Crack文件夹下的dll文件已经替换,同时也已经输出了lic文件,但是仍然无法打开。但是在本地桌面安装就没有问题。初步怀疑MATLAB的License使用机…

909-2014-T1

文章目录 1.原题2.算法思想3.关键代码4.完整代码5.运行结果 1.原题 为带表头的单链表类Chain编写一个成员函数Reverse,该函数对链表进行逆序操作(将链表中的结点按与原序相反的顺序连接),要求逆序操作就地进行,不分配…

远程命令执行漏洞原理,以及防护绕过方式

一、背景 RCE(Remote Command /Code Execute) 远程代码执行漏洞 通过PHP代码注入、Java代码注入等方式连接程序中预留的后门或接口从而进行远程命令执行,达到对服务器的控制。 为什么会出现远程代码执行漏洞呢? Web应用有时需要调用执行一些系统命令函数…

数据库的基本操作

DDL: 1.查询 show databases; 创建数据库: create data 数据库名称; 创建数据库(判断,如果不存在则创建): create database if not exists 数据库名称; 删除数据库 drop database 数据库名称; drop databa…

异行星低代码平台--第三方插件对接:企业微信平台对接(二)

异行星低代码平台可以集成企业微信,实现单点登录、消息推送和组织机构同步。 提示 此功能需要异行星低代码平台企业版授权才能使用。 企业微信集成​ 单点登录 异行星低代码平台集成到企业微信后,只要使用企业微信账户登录企业微信客户端&#xff0…

CSS-背景属性篇

属性名:background-color 功能:设置背景颜色 属性值:符合CSS中颜色规范的值 默认背景颜色是 transparent body{ background-color: blue; } 属性名:background-image 功能:设置背景图片 属性值:url(图片的…

sklearn中的TfidfTransformer和gensim中的TfidfModel的区别

sklearn.feature_extraction.text.TfidfTransformer 和 gensim.models.TfidfModel 都是用于计算文本数据的 TF-IDF 值的工具。它们的主要区别在于实现方式和输入数据的格式。 1、实现方式和输入数据格式: TfidfTransformer 是 scikit-learn 中的一个类,…

PyTorch多GPU训练时同步梯度是mean还是sum?

PyTorch 通过两种方式可以进行多GPU训练: DataParallel, DistributedDataParallel. 当使用DataParallel的时候, 梯度的计算结果和在单卡上跑是一样的, 对每个数据计算出来的梯度进行累加. 当使用DistributedDataParallel的时候, 每个卡单独计算梯度, 然后多卡的梯度再进行平均.…

shell 脚本语句

目录 条件语句 test 命令 比较整数数值 字符串比较 命令举 条件逻辑测试操作 组合写法 举例 双中括号 ​编辑 ( ) / { } if 语句的结构 case 语句 脚本举例 识别 yes 和 no 脚本 检查磁盘使用情况脚本 新建用户以及随机设置用户密码的脚本 补充命令 [RANDOM…

【高性能计算】CUDA,OpenCL,FPGA 加速,MPI

OpenCL OpenCL(Open Computing Language)是一种跨平台的GPU加速技术,由Khronos Group开发。OpenCL允许开发人员在不同的硬件平台上编写并行计算应用程序。 OpenCL使用C语言的子集来编写应用程序,并提供了一组API,可以…

web:[GXYCTF2019]禁止套娃

题目 打开页面显示为 没有其他信息,查看源代码也是空的 用dirsearch扫一下 可能是git源码泄露,可以用githack获取源码 python Githack.py http://5063c85b-a33d-4b6f-ae67-262231a4582e.node4.buuoj.cn:81/.git/去工具所在的目录找到index.php文件 打开…