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

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

相关文章

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

如何使用Ansible实现CI/CD流水线的自动化

如何使用Ansible实现CI/CD流水线的自动化 持续集成(CI)和持续交付(CD)是现代软件开发过程中的核心实践,它们帮助团队更快地交付高质量的软件。Ansible,作为一个强大的自动化工具,可以在CI/CD流水线中发挥关键作用。本文将详细介绍如何使用Ansible实现CI/CD流水线的自动化,包括设计流水线的结构、配置管理、自动化测试、部署、以及集成Ansible与CI/CD工具(如Jen

BIRT 报表的自动化测试

来源:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-birttest/如何为 BIRT 报表编写自动化测试用例 BIRT 是一项很受欢迎的报表制作工具,但目前对其的测试还是以人工测试为主。本文介绍了如何对 BIRT 报表进行自动化测试,以及在实际项目中的一些测试实践,从而提高了测试的效率和准确性 -------

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑燃料电池和电解槽虚拟惯量支撑的电力系统优化调度方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python

自动化表格处理的革命:智能文档系统技术解析

在当今数据驱动的商业环境中,表格数据的自动化处理成为了企业提高效率、降低成本的关键。企业智能文档系统在智能表格识别方面展现出卓越的性能,通过精准识别和处理各种通用表格,显著提升了企业文档管理的智能化水平。本文将深入探讨该系统在表格识别方面的关键技术和应用优势,以及如何通过行业定制化服务满足不同行业的需求。 1. 通用表格识别 智能文档系统通过先进的OCR技术和表格结构识别算法,能够精准

Ganymed实现基本的自动化部署API

Ganymed SSH-2 for Java是一个纯Java实现的SHH2库,官网为http://www.ganymed.ethz.ch/ssh2/,最新的更新时间为2006年10月,在用之前,请仔细看一下FAQ,真的能避免很多很多问题 在google上找到的ganymed-ssh2的官网是http://www.ganymed.ethz.ch/ssh2/,进去看官网的英文简介可以看到该网站已经

python自动化测试框架--RobotFramework

为什么需要测试框架 在测试中,经常会为了怎样做测试、使用什么测试工具、如何使用、为什么使用测试工具、使用测试工具能帮助到我们什么等等问题而纠结。当我们选择一项测试工具时,如何组织大量自动化用例;如何合理的进行初始化清除;如何批量筛选待执行的用例;如何输出清晰的测试报告,就是需要我们考虑的事情了。下面简单介绍个使用比较广泛的自动化测试框架,即Robotframework。 RF的特点 RF:由pyt

探索Invoke:Python自动化任务的瑞士军刀

文章目录 探索Invoke:Python自动化任务的瑞士军刀背景:为何选择Invoke?`invoke`是什么?如何安装`invoke`?简单的`invoke`库函数使用方法场景应用:`invoke`在实际项目中的使用场景一:自动化测试场景二:代码格式化场景三:部署应用 常见问题与解决方案问题一:命令执行失败问题二:权限不足问题三:并发执行问题 总结 探索Invoke:P

Jenkins+Svn+Vue自动化构建部署前端项目(保姆级图文教程)

目录 介绍 准备工作 配置jenkins 构建部署任务 常见问题 介绍 在平常开发前端vue项目时,我们通常需要将vue项目进行打包构建,将打包好的dist目录下的静态文件上传到服务器上,但是这种繁琐的操作是比较浪费时间的,可以使用jenkins进行自动化构建部署前端vue 准备工作 准备vue项目,服务器,linux,ubuntu,centos等都可以,服务器上已经

接口自动化三大经典难题

目录 一、接口项目不生成token怎么解决关联问题 1. Session机制 2. 基于IP或设备ID的绑定 3. 使用OAuth或第三方认证 4. 利用隐式传递的参数 5. 基于时间戳的签名验证 二、接口测试中网络问题导致无法通过怎么办 1. 重试机制 2. 设置超时时间 3. 使用模拟数据 4. 网络问题的预检测 5. 日志记录与错误分析 6. 切换网络环境 7.