曲鸟全栈UI自动化教学(五):Selenium的键盘鼠标事件详解

这篇具有很好参考价值的文章主要介绍了曲鸟全栈UI自动化教学(五):Selenium的键盘鼠标事件详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

在之前的教学中对于页面的操作只涉及到了两个:点击、输入;其实Selenium的键盘鼠标操作还有很多,现在就为你一一讲解。

【Python测试交流群:8140 78962】


二、键盘事件

1. 输入指定内容【send_keys】

1.1 我们可以使用send_keys来输入我们想要输入的内容

例如打开百度,搜索框输入:曲鸟 csdn

import time
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()  # 启动chrome浏览器
driver.get('https://www.baidu.com/')  # 打开百度网址
# 在输入框输入:曲鸟 csdn
driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys('曲鸟 csdn')

1.2 也可以指定按键输入

例如我们打开百度输入:csdn 曲鸟,并粘贴复制它三次

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()  # 启动chrome浏览器
driver.get('https://www.baidu.com/')  # 打开百度网址
# 在输入框输入:曲鸟 csdn
driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys('曲鸟 csdn')
# 按下crtl+A 全选
driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys(Keys.CONTROL, 'a')
# 按下crtl+C 复制
driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys(Keys.CONTROL, 'c')
# 按下crtl+V 粘贴
for i in range(3):
    time.sleep(0.5)
    driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys(Keys.CONTROL, 'v')

执行效果


曲鸟全栈UI自动化教学(五):Selenium的键盘鼠标事件详解


1.3 组合按键规则

send_keys支持按键的组合传递,例如上述的粘贴【Ctrl+V】操作,代码实现为:

driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys(Keys.CONTROL, 'v')

另外,通过+号做连接组合按键也是可行的

driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys(Keys.CONTROL+'c')

如果想同时按下三个或更多按键键,则在括号中使用,+号追加参数即可,例如在输入框同时输入abc:

driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys('a', 'b','c')

另外,我们可以通过【Ctrl+鼠标左键】代码中的Keys,查看支持哪些按键及调用代码
曲鸟全栈UI自动化教学(五):Selenium的键盘鼠标事件详解


2. 模拟按下/弹起【key_down/key_up】

Webdriver还提供了模拟键盘按下/弹起的操作,例如上述的复制操作可以改写为下面的代码

driver.find_element(By.XPATH, '//*[@id="kw"]')
webdriver.ActionChains(driver).key_down(Keys.CONTROL).send_keys("v").key_up(Keys.CONTROL).perform()

实际该方法不常用,使用第一种方法实现来说更简单。

3. 清空输入【clear】

clear方法可以清楚输入框中的内容,例如下面的代码,会先打开百度,搜索框输入:曲鸟 csdn,然后调用clear方法进行清空

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')  # 打开百度网址
# 在输入框输入:曲鸟 csdn
driver = driver.find_element(By.XPATH, '//*[@id="kw"]')
driver.send_keys('曲鸟 csdn')
driver.clear()

三、鼠标事件

1. 点击【click】

通过click方法能够对页面中可点击元素进行点击操作,例如下面的代码会对百度的【百度一下】按钮进行点击

from selenium import webdriver
from selenium.webdriver.common.by import By

driver= webdriver.Chrome()
driver.get('https://www.baidu.com/')  # 打开百度网址
# 点击百度一下
driver.find_element(By.XPATH,'//*[@id="su"]').click()

2. 单击并按住【click_and_hold】

下面的代码会将button这个元素单击并按住

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')  # 打开百度网址
button = driver.find_element(By.XPATH, '//*[@id="s-top-left"]/a[1]')
webdriver.ActionChains(driver).click_and_hold(button).perform()

3. 右键单击【context_click】

下面的代码会将button这个元素单击并按住

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')  # 打开百度网址
button = driver.find_element(By.XPATH, '//*[@id="s-top-left"]/a[1]').click()
webdriver.ActionChains(driver).context_click(button).perform()

4. 移动到元素(悬浮)【move_to_element】

下面的代码会将鼠标移动到button这个元素上

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')  # 打开百度网址
button = driver.find_element(By.XPATH, '//*[@id="s-top-left"]/a[1]')
webdriver.ActionChains(driver).move_to_element(button).perform()

5. 偏移移动【move_by_offset】

此方法将鼠标从其当前位置(或 0,0)移动给定的偏移量。如果坐标在视图窗口之外,那么鼠标将在浏览器窗口之外结束。
下面的代码会将以button这个元素为起点,将鼠标移动长为100,高为100的距离

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')  # 打开百度网址
button = driver.find_element(By.XPATH, '//*[@id="s-top-left"]/a[1]')
xOffset = 100
yOffset = 100
webdriver.ActionChains(driver).move_by_offset(xOffset, yOffset).perform()

6. 拖拽【drag_and_drop】

此方法首先在源元素上执行单击并按住,移动到目标元素的位置,然后释放鼠标。
下面的代码会单击按住sourceEle元素,然后拖拽到targetEle上,然后释放鼠标

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://crossbrowsertesting.github.io/drag-and-drop")
sourceEle = driver.find_element(By.ID, "draggable")
targetEle = driver.find_element(By.ID, "droppable")
webdriver.ActionChains(driver).drag_and_drop(sourceEle,targetEle).perform()

7. 偏移拖拽【drag_and_drop_by_offset】

此方法首先在源元素上执行单击并按住,移动到给定的偏移量,然后释放鼠标。
下面的代码会单击按住sourceEle元素,将鼠标移动长为100,高为100的距离,然后释放鼠标

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://crossbrowsertesting.github.io/drag-and-drop")
sourceEle = driver.find_element(By.ID, "draggable")
XOffset = 100
YOffset = 100
webdriver.ActionChains(driver).drag_and_drop_by_offset(sourceEle, XOffset, YOffset).perform()

8. 释放鼠标【release】

此动作释放按下的鼠标左键。如果传递了 WebElement,它将在给定的 WebElement 上释放按下的鼠标左键文章来源地址https://www.toymoban.com/news/detail-468939.html

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://crossbrowsertesting.github.io/drag-and-drop")
sourceEle = driver.find_element(By.ID, "draggable")
targetEle  = driver.find_element(By.ID, "droppable")
webdriver.ActionChains(driver).click_and_hold(sourceEle).move_to_element(targetEle).perform()
webdriver.ActionChains(driver).release().perform()




👇🏻欢迎关注公众号【曲鸟讲测试开发】,获取最新教程,面试经验、Python知识分享👇🏻

到了这里,关于曲鸟全栈UI自动化教学(五):Selenium的键盘鼠标事件详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Selenium UI自动化测试入门

    1.先下载Pycharm编辑器, 网站:下载地址 2.安装python环境包 地址:Download Python | Python.org    安装的时候记住勾选自动配置环境变量 3.在pycharm中配置python执行器路径   4.安装selenium库 pip install selenium==4.1.1  查看当前selenium版本 按住ctrl+鼠标左键点击  显示版本号 5.安装chromdriv

    2024年02月09日
    浏览(68)
  • Selenium UI自动化实战过程记录

    1.1项目框架 项目如何使用框架: 本项目采用unitest框架 设计模式是如何应用:本项目采用pageobject设计模式 UI对象库思想 项目设计 一个模块(被测项目的页面)对应一个py文件及一个测试类(测试文件) 每一个测试页面(系统的页面)中存储页面元素及此页面中涉及到的功能

    2024年02月04日
    浏览(39)
  • Python Selenium UI自动化测试_python 自动化ui测试,Kotlin可能带来的一个深坑

    :层级选取,如:#formspaninput 举例:div.entry-sider-panelsection.entry-sider-panel__bddivdiv:nth-child(1) 3.3 元素操作 3.3.1 输入内容 send_keys() 3.3.2 点击元素 click() 3.3.3 清空元素文本内容 clear() 3.3.4 获取元素文本 text 返回的是字符串 3.3.5 获取元素尺寸 size 返回的是字典 3.3.6 获取元素的属性值

    2024年04月25日
    浏览(43)
  • python+selenium封装UI自动化框架

    seleinum框架 框架的思想: 解决我们测试过程中的问题:大量的重复步骤,用自动化来实现 1)配置和程序的分离 2)测试数据和程序的分离 3)不懂编程的人员可以方便使用:使用的时候不需要写程序 4)有日志功能,实现无人值守 5)自动发报告 6)框架中不要有重复的代码,

    2024年02月09日
    浏览(64)
  • python+selenium实现UI自动化(一)

    selenium官方网站 selenium ide 录制工具。 火狐/google/edge插件 selenium webdriver   结合代码来编写自动化用例。提供很多在浏览器上的操作的api,本文主要记录此项的学习过程 selenium grid   分布式。火狐/google/edge上同时运行。把所有用例拆分到多设备上运行,运行效率更高,更快。

    2023年04月24日
    浏览(42)
  • selenium-基于UI的自动化测试框架

      自动化测试是指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果,将人为驱动的测试行为转化为机器执行的过程   自动化测试包括UI自动化、接口自动化、单元测试自动化。按照这个金字塔模型来进行自动化测试

    2024年02月05日
    浏览(56)
  • UI自动化测试篇 :Selenium2(Webdriver)&TestNG自动化测试环境搭建

     🔥 交流讨论: 欢迎加入我们一起学习! 🔥 资源分享 : 耗时200+小时精选的「软件测试」资料包 🔥  教程推荐: 火遍全网的《软件测试》教程   📢 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!    最开始学习UI自动化,用的工具是QTP10,用起来确实比较容易上手

    2024年03月10日
    浏览(63)
  • 【Selenium】UI自动化|元素定位常见问题

    分析的可能原因: 页面还没有加载出来,就对页面上的元素进行的操作 元素在iframe中,先要理解下frame的实质,frame中实际上是嵌入了另一个页面,而webdriver每次只能在一个页面识别,因此需要先定位到相应的frame,对那个页面里的元素进行定位。 元素在新的窗口中,未切换句

    2024年04月10日
    浏览(55)
  • Pytest+selenium UI自动化测试实战实例

    今天来说说pytest吧,经过几周的时间学习,有收获也有疑惑,总之最后还是搞个小项目出来证明自己的努力不没有白费。 1    确保您已经安装了 python3.x 2    配置 python3+pycharm+selenium2 开发环境     3    安装pytest库 pip install pytest 4    安装pytest -html 报告插件 pip install pytest

    2024年02月05日
    浏览(66)
  • Python UI自动化-Selenium【JS操作】

    在selenium定位元素操作中,如果有些元素定位不到,或者页面元素的属性有需要修改,可以通过js操作来对html页面元素获取、元素属性获取、元素的属性进行修改 selenium当中执行js代码有两种方式: 1、driver.execute_script(js代码(语句用;隔开),传入js代码当中的值) 2、使用s

    2024年02月16日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包