【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()
相关推荐
咕噜咕噜啦啦9 分钟前
python爬虫实战训练
爬虫·python
盛夏绽放14 分钟前
Python字符串常用内置函数详解
服务器·开发语言·python
我想睡觉26114 分钟前
Python训练营打卡DAY27
开发语言·python·机器学习
蹦蹦跳跳真可爱58914 分钟前
Python----神经网络(基于DNN的风电功率预测)
人工智能·pytorch·python·深度学习·神经网络·dnn
程序员小远21 分钟前
UI自动化测试方案详解
自动化测试·软件测试·selenium·测试工具·ui·职场和发展·测试用例
冰轮a33 分钟前
Python打卡 DAY 27
python
拓端研究室TRL2 小时前
Python与MySQL网站排名数据分析及多层感知机MLP、机器学习优化策略和地理可视化应用|附AI智能体数据代码
人工智能·python·mysql·机器学习·数据分析
小哈里2 小时前
【pypi镜像源】使用devpi实现python镜像源代理(缓存加速,私有仓库,版本控制)
开发语言·python·缓存·镜像源·pypi
CoderIsArt2 小时前
WPF的UI元素类型详解
ui·wpf
全栈派森2 小时前
云存储最佳实践
后端·python·程序人生·flask