【UI自动化测试技术】自动化测试研究:Python+Selenium+Pytest+Allure,详解UI自动化测试,了解元素交互的常用方法(精)(三)

导言

在之前的文章里,我们一起学习了定位方式、等待机制等内容。相信通过之前的学习,你已经掌握了WEB自动化的一些入门知识,具备了编写代码的一些基础知识和能力。这篇文章,让我们一起学习一下模拟键盘事件。

在实际的项目当中,有的时候,我们需要利用到键盘的一些快捷键对网页进行操作,或点击一些浏览器中的辅助功能,这个时候,我们就要用到键盘事件,编写相应的代码实现模拟键盘的操作。

这篇文章共分四个小阶段(四篇文章),我将会为大家进行分解,方便大家的查阅,提升阅读体验。

学习目标

1、了解元素交互的常用方法(本节目标

2、学习如何对多选元素进行操作(本节目标

3、学习模拟鼠标进行相关操作

4、学习模拟键盘进行相关操作

Web元素交互

在selenium的官方文档中,介绍了五种基本命令可用于元素的操作。selenium官方中文文档地址:selenium官方文档

下面我们一起来学习:1、点击 (适用于任何元素);2、发送键位 (仅适用于文本字段和内容可编辑元素);3、清除 (仅适用于文本字段和内容可编辑元素);4、提交 (仅适用于表单元素);5、选择 (参见 选择列表元素)

这些方法的设计目的是尽量模拟用户体验, 所以, 与 Actions接口 不同, 在指定制定操作之前,会尝试执行两件事。

点击

元素点击命令执行在元素中央. 如果元素中央由于某些原因被遮挡 , Selenium将返回一个元素点击中断错误。

python 复制代码
#导包
from selenium import webdriver
# 初始化浏览器驱动
driver = webdriver.Chrome()
username = "18894687777"  # 设置用户名
password = "123456"  # 设置密码
driver.get("http://csdnadmin/login.com/")  # 打开项目网址
# 点击登陆按钮
driver.find_element(By.XPATH, "//*[@id='btnSearch']").click()  

发送键位

元素发送键位命令 将录入提供的键位到可编辑的 元素. 通常, 这意味着元素是具有文本类型的表单的输入元素或具有内容可编辑属性的元素。如果不可编辑, 则返回 无效元素状态错误。

python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("http://www.google.com")
#模拟键盘事件-回车键操作,表示确定
driver.find_element(By.NAME, "q").send_keys("测试文字" + Keys.ENTER)

清除

元素清除命令重置元素的内容,这要求元素可编辑, 且可重置通常, 这意味着元素是具有文本类型的表单的输入元素或具有 内容可编辑属性的元素. 如果不满足这些条件, 将返回无效元素状态错误。

python 复制代码
el = driver.find_element(By.XPATH, "//input[@name='searchKey']")
el.send_keys("大王")
sleep(3)
#清除操作
el.clear()

提交

在Selenium 4中, 不再通过单独的端点以及脚本执行的方法来实现.。因此, 建议不要使用此方法, 而是单击相应的表单提交按钮。可以忽略,此处不做讲解。

选择

1、如何访问本地化的html文件?

头部给出 -- file://

尾部给出 -- 系统中的绝对路径

2、与其他元素相比,选择列表具有特殊的行为。选择元素可能需要大量样板代码(boilerplate code)才能自动化. 为了减少这种情况并使您的测试更简洁, 在Selenium的support包中有一个 Select 类。

python 复制代码
#导包
from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
# 创建一个select对象
select_element = driver.find_element(By.ID, 's1Id')
select_object = Select(select_element)
sleep(3)
python 复制代码
#有三种方法可以选择选项
#选项索引
select_object.select_by_index(1)
sleep(3)
#选项value属性值
select_object.select_by_value('o3')
sleep(3)
#选项文本
select_object.select_by_visible_text('o3')
sleep(3)
python 复制代码
#检查所有被选择的选项
all_selected_options = select_object.all_selected_options
print("=======检查所有被选择的选项========")
print(all_selected_options
#返回列表中第一个被选择的选项
first_selected_option = select_object.first_selected_option
print("=======返回列表中第一个被选择的选项========")
print(first_selected_option)
#返回列表的所有选项
all_available_options = select_object.options
print("=======返回列表的所有选项========")
print(all_available_options)
python 复制代码
# ==========有四种方法可以取消选择,仅适用于多选列表==========
#创建一个多选select对象
select_element = driver.find_element(By.XPATH, "//*[@multiple='multiple']")
select_multiple_object = Select(select_element)
select_multiple_object.select_by_index(3)
select_multiple_object.select_by_index(1)
sleep(3)
python 复制代码
# 确定是否允许多选
does_this_allow_multiple_selections = select_multiple_object.is_multiple
print("==========确定是否允许多选==========")
print(does_this_allow_multiple_selections)
#选项索引
select_multiple_object.deselect_by_index(3)
#选项value属性值
select_multiple_object.deselect_by_value('o1val')
#选项文本
select_multiple_object.deselect_by_visible_text('o3')
#取消所有被选择的选项
select_multiple_object.deselect_all()
相关推荐
yyfhq31 分钟前
sdnet
python
测试199838 分钟前
2024软件测试面试热点问题
自动化测试·软件测试·python·测试工具·面试·职场和发展·压力测试
love_and_hope39 分钟前
Pytorch学习--神经网络--搭建小实战(手撕CIFAR 10 model structure)和 Sequential 的使用
人工智能·pytorch·python·深度学习·学习
海阔天空_20131 小时前
Python pyautogui库:自动化操作的强大工具
运维·开发语言·python·青少年编程·自动化
零意@1 小时前
ubuntu切换不同版本的python
windows·python·ubuntu
思忖小下1 小时前
Python基础学习_01
python
q567315232 小时前
在 Bash 中获取 Python 模块变量列
开发语言·python·bash
是萝卜干呀2 小时前
Backend - Python 爬取网页数据并保存在Excel文件中
python·excel·table·xlwt·爬取网页数据
代码欢乐豆2 小时前
数据采集之selenium模拟登录
python·selenium·测试工具
狂奔solar3 小时前
yelp数据集上识别潜在的热门商家
开发语言·python