【软件测试专栏】自动化测试函数篇

news2024/9/22 1:24:54

  • 博客主页:Duck Bro 博客主页
  • 系列专栏:软件测试专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

自动化测试函数篇

关键词:函数、浏览器参数、常用函数、元素定位

目录

  • 自动化测试函数篇
    • 一、元素定位函数
      • 1. cssSelector
      • 2. xpath
    • 二、操作函数
      • 1. 点击/提交(按钮)
      • 2. 模拟按键输入(文本框输入)
      • 3. 清楚文本内容(文本框清空)
      • 4. 获取文本信息
      • 5. 获取当前页面标题
      • 6. 获取当前页面URL(网址)
    • 三、窗口函数
      • 1. 窗口切换
      • 2. 设置窗口大小
      • 3. 窗口截图
      • 4. 关闭窗口
    • 四、弹窗函数
      • 1. 警告窗口
      • 2. 确认窗口
      • 3. 提示窗口
    • 五、等待函数
      • 1. 强制等待
      • 2. 隐式等待
      • 3. 显示等待
    • 六、浏览器导航
      • 1. 打开网页
      • 2. 前进、后退、刷新
    • 七、文件上传
      • 1. send_keys
    • 八、浏览器参数设置
      • 1. 设置无头模式
      • 2. 页面加载策略


一、元素定位函数

web自动化测试的操作核心是能够找到页面对应的元素,然后才能对元素进行具体的操作。
常见的元素定位⽅式非常多,如id,classname,tagname,xpath,cssSelector

常用的主要由cssSelectorxpath

1. cssSelector

选择器功能:选中页面中的元素
选择器的种类分为:基础选择器和复合选择器。常见的元素定位⽅式可以通过id选择器和⼦类选择器来进行定位。

百度一下按钮:#su

在这里插入图片描述

搜索输入框:#kw

在这里插入图片描述

2. xpath

获取界面所有节点

//*

获取页面指定节点

//[指定节点]

获取一个节点的直接子节点

/

获取一个节点的父节点

..

节点属性的匹配

[@...]


二、操作函数

1. 点击/提交(按钮)

click()

示例:选中百度一下(按钮)进行点击

#4、找到“百度⼀下”按钮并点击
driver.find_element(By.CSS_SELECTOR,"#su").click()

在这里插入图片描述

2. 模拟按键输入(文本框输入)

send_keys("")

示例:模拟在输入框中输入CSDN

#找到输⼊框并输⼊“CSDN”
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("CSDN")

在这里插入图片描述

3. 清楚文本内容(文本框清空)

clear()清楚当前输入框中的内容

#找到输⼊框并输⼊“CSDN”
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("CSDN")
time.sleep(1)
#清除输⼊框内容
driver.find_element(By.CSS_SELECTOR,"#kw").clear()
time.sleep(1)
#找到输⼊框并输⼊“稀土掘金”
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("稀土掘金")

在这里插入图片描述

4. 获取文本信息

text 获取元素对应的文本

#获取文本内容
text = driver.find_element(By.CSS_SELECTOR,"#hotsearch-content-wrapper > li:nth-child(1) > a > span.title-content-title").text
print(f"text:{text}")

在这里插入图片描述

在这里插入图片描述

5. 获取当前页面标题

title

#获取当前页面标题
title=driver.title
print(f"title:{title}")

在这里插入图片描述
在这里插入图片描述

6. 获取当前页面URL(网址)

current_url

#获取当前页面url
url=driver.current_url
print(f"url:{url}")

在这里插入图片描述

在这里插入图片描述


三、窗口函数

1. 窗口切换

#获取当前页面句柄
driver.current_window_handle
#获取所有页面句柄:
driver.window_handles
#切换当前句柄为最新页面
curWindow = driver.current_window_handle
allWindows = driver.window_handles
for window in allWindows:
 if window != curWindow:
 driver.switch_to.window(window)

2. 设置窗口大小

#窗口最⼤化
driver.maximize_window()
#窗口最⼩化
driver.minimize_window()
#窗口全屏
driver.fullscreen_window()
#⼿动设置窗口⼤⼩
driver.set_window_size(1024,768)

3. 窗口截图

#简单版本
driver.save_screenshot('../images/image.png')
#⾼阶版本
filename = "autotest-"+datetime.datetime.now().strftime('%Y-%m-%d-%H%M%S')+'.png'
driver.save_screenshot('../images/'+filename)

4. 关闭窗口

#注意:窗口关闭后driver要重新定义
driver.close()

四、弹窗函数

1. 警告窗口

alert = driver.switchTo.alert
//确认
alert.accept()

在这里插入图片描述

2. 确认窗口

alert = driver.switchTo.alert
//确认
alert.accept()
//取消
alert.dismiss()

在这里插入图片描述

3. 提示窗口

alert = driver.switchTo.alert
//输入框
alert.send_keys("hello")
//确认
alert.accept()
//取消
alert.dismiss()

在这里插入图片描述


五、等待函数

1. 强制等待

time.sleep()

优点:使用简单,调试的时候⽐较有效
缺点:影响运行效率,浪费⼤量的时间

#找到输⼊框并输⼊“CSDN”
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("CSDN")
#等待1秒
time.sleep(1)

2. 隐式等待

implicitly_wait() 参数:秒

隐式等待是⼀种智能等待,他可以规定在查找元素时,在指定时间内不断查找元素。
如果找到则代码继续执行,直到超时没找到元素才会报错。

#隐式等待5秒
driver.implicitly_wait(5)

3. 显示等待

WebDriverWait(driver,sec).until(functions)
functions涉及到selenium.support.ui.ExpectedConditions包下的 ExpectedConditions类

显示等待也是⼀种智能等待,在指定超时时间范围内只要满⾜操作的条件就会继续执行后续代码

优点:显示等待是智能等待,可以自定义显示等待的条件,操作灵活
缺点:写法复杂

from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver,2)
wait.until(EC.invisibility_of_element((By.XPATH,'//*
[@id="2"]/div/div/div[3]/div[1]/div[1]/div')))

六、浏览器导航

1. 打开网页

driver.get("网址")

#输⼊百度⽹址:https://www.baidu.com
driver.get("https://www.baidu.com")

2. 前进、后退、刷新

driver.back()
driver.forward()
driver.refresh()


七、文件上传

1. send_keys

点击文件上传的场景下会弹窗系统窗口,进行文件的选择。
selenium无法识别非web的控件,上传文件窗口为系统自带,无法识别窗口元素
但是可以使用sendkeys来上传指定路径的文件,达到的效果是⼀样的

driver.get("file:///D:/file/%E6%AF%94%E7%89%B9%E6%95%99%E5%8A%A1/%E6%B5%8B%E8%A
F%95/selenium4html/selenium-html/upload.html")
ele = driver.find_element(By.CSS_SELECTOR,"body > div > div > input[type=file]")
ele.send_keys("D:\\file\\test.txt")

八、浏览器参数设置

1. 设置无头模式

Selenium的无头模式是指在运行自动化测试时不显示浏览器界面,以提高测试的执行速度和效率。通过使用无头模式,可以在后台运行测试,而无需打开一个可见的浏览器窗口。

在Selenium中,可以通过设置WebDriver的选项来启用无头模式。下面是一个使用Chrome浏览器无头模式的示例:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 创建Chrome浏览器的选项对象
chrome_options = Options()
chrome_options.add_argument('--headless')  # 启用无头模式

# 实例化Chrome浏览器对象,并传入选项对象
driver = webdriver.Chrome(options=chrome_options)

# 执行自动化测试操作
# ...

# 关闭浏览器
driver.quit()

在上面的示例中,通过chrome_options.add_argument('--headless')来启用Chrome浏览器的无头模式。然后,将选项对象传递给webdriver.Chrome()方法,以实例化Chrome浏览器对象。

需要注意的是,无头模式在不同的浏览器中的设置方式可能会略有不同。请根据自己使用的浏览器和Selenium版本来查找相应的方法和选项设置。Selenium的无头模式是指在运行自动化测试时不显示浏览器界面,以提高测试的执行速度和效率。通过使用无头模式,可以在后台运行测试,而无需打开一个可见的浏览器窗口。

2. 页面加载策略

options.page_load_strategy = '加载⽅式'

页面加载⽅式主要有三种类型:

策略说明
normal默认值, 等待所有资源下载
eagerDOM 访问已准备就绪, 但诸如图像的其他资源可能仍在加载
none完全不会阻塞WebDriver
options = webdriver.ChromeOptions()
options.page_load_strategy = 'eager'
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()),options=options)

在这里插入图片描述

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

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

相关文章

JVM系列(十) -垃圾收集器介绍

一、摘要 在之前的几篇文章中,我们介绍了 JVM 内部布局、对象的创建过程、运行期的相关优化手段以及垃圾对象的回收算法等相关知识。 今天通过这篇文章,结合之前的知识,我们一起来了解一下 JVM 中的垃圾收集器。 二、垃圾收集器 如果说收集算法是内存回收的方法论,那么…

前端面试题——栈与队列、动态路由、链表

栈、队列与链表 Java数据结构栏目总结-CSDN博客 栈(Stack) 栈是一种后进先出(LIFO, Last In First Out)的数据结构。它只允许在栈顶进行添加(push)或删除(pop)元素的操作。 基本操…

学习笔记八:基于Jenkins+k8s+Git+DockerHub等技术链构建企业级DevOps容器云平台

基于Jenkinsk8sGitDockerHub等技术链构建企业级DevOps容器云平台 测试jenkins的CI/CD在Jenkins中安装kubernetes插件安装blueocean插件配置jenkins连接到我们存在的k8s集群配置pod-template添加自己的dockerhub凭据测试通过Jenkins部署应用发布到k8s开发环境、测试环境、生产环…

连锁美业门店如何寻找精准客户?美业SaaS拓客系统管理系统源码

连锁美业门店要寻找精准客户,可以采取多种方法结合现实因素进行推广和营销。以下是博弈美业系统给出的一些建议: 1.定位目标客户群体: 首先,门店需要确定目标客户是谁。这可能包括年龄、性别、收入水平、生活方式以及消费习惯等…

AI+RuoYi

1.RuoYi-Vue入门 采用了前后端分离的单体架构设计 1.1运行后端项目 1.Git下载 打开gitee - 点击克隆 -复制https - 打开IDEA关闭project - get vcs - 粘贴 通过idea克隆若依源码,仓库地址:RuoYi-Vue: 🎉 基于SpringBoot,Sprin…

屎记·大夏王本纪

大夏王,古遂州人氏。公元 2023 年冬,君临绵州,是为称王,国号 CW,建元 BK,意为可递万世而为君。以颈上常年绿光,自以为祥瑞,故又自号“森林”。其人方头大耳,幼时则谓富贵…

【学术会议征稿】第二届人工智能、系统与网络安全国际学术会议 (AISNS 2024)

第二届人工智能、系统与网络安全国际学术会议 (AISNS 2024) 2024 2nd International Conference on Artificial Intelligence, Systems and Network Security 由湖南工程学院主办的第二届人工智能、系统与网络安全国际学术会议 (AISNS 2024)将于2024年…

docker部署nginx、docker常用命令

1、安装nginx 未加版本号,默认最新版 docker pull nginxdocker pull nginx:版本号2、查看是否拉取成功 2-1、查看镜像 docker images2-2、镜像打包->可给他人使用 docker save -o nginx.tar nginx:latest2-3、读取打包的镜像 记得先走第三步删除镜像&#x…

Redis安装步骤——离线安装与在线安装详解

Linux环境下Redis的离线安装与在线安装详细步骤 环境信息一、离线安装1、安装环境2、下载redis安装包3、上传到服务器并解压4、编译redis5、安装redis6、配置redis(基础配置)7、启动redis8、本机访问redis9、远程访问redis 二、在线安装1、更新yum源2、安…

【全网最全】《2024高教社杯/国赛》 B题 思路+代码+文献 优化算法+决策树 第一问 生产过程中的决策问题

领取压缩包 问题 1 建模思路 问题描述 企业需要购买零配件1和零配件2,供应商声称一批零配件(零配件1或零配件2)的次品率不超过某个标称值(例如10%)。企业希望通过抽样检测来决定是否接收这批零配件,同时希…

跨域问题(CORS)

介绍 跨域资源共享(CORS, Cross-Origin Resource Sharing)是浏览器的一个安全机制,用来防止来自一个域的网页对另一个域下的资源进行请求。仅允许向 同域名、同端口 的服务器发送请求。 对于前后端分离的项目,往往会有跨域问题。…

SQL必知必会51题

※食用指南:文章内容为牛客网《SQL必知必会》51道题重点笔记,用于重复思考错题,加深印象。 本文章涉及题目也是《SQL必知必会》书中“挑战题”,题目及答案:《SQL必知必会》随书习题答案 练习传送门:SQL必…

java重点学习-Springcloud+业务相关

五 springcloud,业务,消息中间件 5.1 Spring Cloud 5大组件有哪些 5.2 服务注册和发现是什么意思? Sprin Cloud如何实现服务注册发现? 我们当时项目采用的eureka作为注册中心,这个也是spring cloud体系中的一个核心组件服务注册: 服务提供…

Javaweb开发——maven

一、概述 介绍:Apache Maven是- -个项目管理和构建工具,它基于项目对象模型 (POM Project Object Model)的概念,通过一小段描述信息来管理项目的构建。 作用: ➢方便的依赖管理 ➢…

仕考网:公务员笔试和面试哪个难?

公务员笔试和面试哪个难?二者之间考察的方向不同,难度也是不同的。 笔试部分因其广泛的知识点和有限的考试时间显得难度更高一些,在笔试环节中,考生需在有限的时间内应对各种问题,而且同时还要面对激烈的竞争,在众多…

LabVIEW程序升级改造注意问题

在对别人编写的LabVIEW程序进行升级改造时,尤其是要更换硬件或增加新功能时,需要从多个方面进行细致评估和规划,以确保顺利完成升级。以下是关键注意事项和评估方法: 1. 理解原有设计: 深入理解原有系统的架构、功能逻…

记录下Linux宝塔安装java后无法执行命令,mysql和redis外网无法连接的问题。

新服务器的到来,先把环境整整,。 问题1:java安装成功,想执行命令 java -version测试一下,报错未找到命令。 这个通常意味着尽管你已经在宝塔面板上安装了Java,但是系统无法识别Java的路径,因此…

STM32G474之模拟比较器

STM32G474之模拟比较器测试方法:PA1的附加功能为COMP1_INP,无需映射,直接将它配置为模拟功能,然后将COMP1_OUT引脚映射到PA0,采用DAC1_OUT1输出电压给比较器同向输入COMP1_INP引脚,因此在测试时&#xff0c…

【python】—— Python爬虫实战:爬取珠海市2011-2023年天气数据并保存为CSV文件

目录 目标 准备工作 爬取数据的开始时间和结束时间 爬取数据并解析 将数据转换为DataFrame并保存为CSV文件 本文将介绍如何使用Python编写一个简单的爬虫程序,以爬取珠海市2011年至2023年的天气数据,并将这些数据保存为CSV文件。我们将涉及到以下知识点: 使用r…

UnityShader自定义属性特性

前言: 在编写UnityShader时,我们常常会使用特性来更换材质球面板的属性外观,除此之外,还可以使用自定义的扩展脚本来实现自定义的材质球界面,参考我之前的文章UnityShaderUI编辑器扩展 但是自定义扩展每次都要单独写…