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

2024-09-06 00:36

本文主要是介绍【软件测试专栏】自动化测试函数篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


  • 博客主页: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.chinasem.cn/article/1140501

相关文章

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

Python实现Microsoft Office自动化的几种方式及对比详解

《Python实现MicrosoftOffice自动化的几种方式及对比详解》办公自动化是指利用现代化设备和技术,代替办公人员的部分手动或重复性业务活动,优质而高效地处理办公事务,实现对信息的高效利用... 目录一、基于COM接口的自动化(pywin32)二、独立文件操作库1. Word处理(python-d

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

Python实现自动化表单填写功能

《Python实现自动化表单填写功能》在Python中,自动化表单填写可以通过多种库和工具实现,本文将详细介绍常用的自动化表单处理工具,并对它们进行横向比较,可根据需求选择合适的工具,感兴趣的小伙伴跟... 目录1. Selenium简介适用场景示例代码优点缺点2. Playwright简介适用场景示例代码

Python自动化处理手机验证码

《Python自动化处理手机验证码》手机验证码是一种常见的身份验证手段,广泛应用于用户注册、登录、交易确认等场景,下面我们来看看如何使用Python自动化处理手机验证码吧... 目录一、获取手机验证码1.1 通过短信接收验证码1.2 使用第三方短信接收服务1.3 使用ADB读取手机短信1.4 通过API获取

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙

Python自动化Office文档处理全攻略

《Python自动化Office文档处理全攻略》在日常办公中,处理Word、Excel和PDF等Office文档是再常见不过的任务,手动操作这些文档不仅耗时耗力,还容易出错,幸运的是,Python提供... 目录一、自动化处理Word文档1. 安装python-docx库2. 读取Word文档内容3. 修改

Python自动化办公之合并多个Excel

《Python自动化办公之合并多个Excel》在日常的办公自动化工作中,尤其是处理大量数据时,合并多个Excel表格是一个常见且繁琐的任务,下面小编就来为大家介绍一下如何使用Python轻松实现合... 目录为什么选择 python 自动化目标使用 Python 合并多个 Excel 文件安装所需库示例代码

10个Python自动化办公的脚本分享

《10个Python自动化办公的脚本分享》在日常办公中,我们常常会被繁琐、重复的任务占据大量时间,本文为大家分享了10个实用的Python自动化办公案例及源码,希望对大家有所帮助... 目录1. 批量处理 Excel 文件2. 自动发送邮件3. 批量重命名文件4. 数据清洗5. 生成 PPT6. 自动化测试

10个Python Excel自动化脚本分享

《10个PythonExcel自动化脚本分享》在数据处理和分析的过程中,Excel文件是我们日常工作中常见的格式,本文将分享10个实用的Excel自动化脚本,希望可以帮助大家更轻松地掌握这些技能... 目录1. Excel单元格批量填充2. 设置行高与列宽3. 根据条件删除行4. 创建新的Excel工作表5