• 博客主页: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()

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

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

send_keys("")

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

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

【软件测试专栏】自动化测试函数篇_功能测试_02

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}")


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

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

current_url

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

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


三、窗口函数

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()

【软件测试专栏】自动化测试函数篇_功能测试_05

2. 确认窗口

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

【软件测试专栏】自动化测试函数篇_学习_06

3. 提示窗口

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

【软件测试专栏】自动化测试函数篇_学习_07


五、等待函数

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)