当前位置: 首页 > article >正文

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


  • 博客主页: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.kler.cn/a/291989.html

相关文章:

  • Python 打包教程:从零开始构建可分发的Python包
  • 如何编译 Cesium 源码
  • 【C++】深入理解 C++ 优先级队列、容器适配器与 deque:实现与应用解析
  • Spring整合Redis
  • SystemVerilog学习——构造函数new
  • 千益畅行,共享旅游卡市场乱象解析与未来展望
  • 业务复杂度治理方法论--十年系统设计经验总结
  • 【Hot100】LeetCode—34. 在排序数组中查找元素的第一个和最后一个位置
  • pnpm、npm和nvm分别时什么,及区别?
  • Android架构组件:MVVM模式的实战应用于数据绑定技巧
  • shell脚本的变量与应用
  • 计算机网络11——数据库语法2
  • hyperf json-rpc
  • <meta name=“robots“ content=““>介绍
  • Linux下快速判断当前终端使用的是bash or csh
  • 操作系统:线程实现方式
  • 【赵渝强老师】MongoDB的存储引擎
  • WorkPlus安全即时通讯:端到端加密开启信息保密新时代
  • [大数据]Debug:常见错误集合
  • 【Python机器学习】NLP词频背后的含义——从词频到主题得分
  • 开源模型应用落地-qwen2-7b-instruct-LoRA微调-ms-swift-单机多卡-RTX 4090双卡(十四)
  • 微信小程序知识点(二)
  • 2024年高教社杯数学建模国赛B题超详细解题思路
  • 【深度学习】softmax 回归的从零开始实现与简洁实现
  • java fastxml json 科学计数法转换处理
  • 《机器学习》—— PCA降维