【软件测试专栏】自动化测试函数篇
- 博客主页: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
常用的主要由
cssSelector
和xpath
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 | 默认值, 等待所有资源下载 |
eager | DOM 访问已准备就绪, 但诸如图像的其他资源可能仍在加载 |
none | 完全不会阻塞WebDriver |
options = webdriver.ChromeOptions()
options.page_load_strategy = 'eager'
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()),options=options)