自动化测试常用函数:弹窗、等待、导航、上传与参数设置

目录

一、弹窗

[1. 警告弹窗+确认弹窗](#1. 警告弹窗+确认弹窗)

[2. 提示弹窗](#2. 提示弹窗)

二、等待

[1. 强制等待](#1. 强制等待)

[2. 隐式等待](#2. 隐式等待)

[3. 显示等待](#3. 显示等待)

三、浏览器导航

[1. 打开网站](#1. 打开网站)

[2. 浏览器的前进、后退、刷新](#2. 浏览器的前进、后退、刷新)

四、文件上传

五、浏览器参数设置

[1. 设置无头模式](#1. 设置无头模式)

[2. 页面加载策略](#2. 页面加载策略)


一、弹窗

弹窗是在页面是找不到任何元素的,这种情况该怎么处理呢?我们可以使用selenium提供的Alert接口。

1. 警告弹窗+确认弹窗

cpp 复制代码
alert = driver.switchTo.alert
//确认
alert.accept()
//取消
alert.dismiss()

2. 提示弹窗

cpp 复制代码
alert = driver.switchTo.alert
alert.send_keys("hello")
alert.accept()
alert.dismiss()

二、等待

通常代码执行的速度要比页面渲染的速度要快,那该如何避免因为渲染过慢出现的自动化误报的问题呢?可以使用selenium中提供的以下三种等待方法:

1. 强制等待

  • time.sleep()
  • 优点:使用简单,调试的时候比较有效
  • 缺点:影响运行效率,浪费大量的时间

2. 隐式等待

隐式等待是一种智能等待,他可以规定在查找元素时,在指定时间内不断查找元素。如果找到则代码继续执行,直到超时没找到元素才会报错。

implicitly_wait() 参数:秒

cpp 复制代码
#隐式等待5秒
driver.implicitly_wait(5)

隐式等待作用域是整个脚本的所有元素。即只要driver对象没有被释放掉( driver.quit() ),隐式等待就⼀直生效。

优点:智能等待,作用于全局

3. 显示等待

显示等待也是一种智能等待,在指定超时时间范围内只要满足操作的条件就会继续执行后续代码。

示例:

cpp 复制代码
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. 打开网站

cpp 复制代码
driver.get("https://www.baidu.com")

2. 浏览器的前进、后退、刷新

  • 前进:driver.back()
  • 后退:driver.forward()
  • 刷新:driver.refresh()
cpp 复制代码
import time
from datetime import datetime
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.ie.service import Service
from webdriver_manager.chrome import ChromeDriverManager

#打开浏览器---驱动管理
ChromeIns = ChromeDriverManager().install()
#创建谷歌浏览器驱动对象
driver = webdriver.Chrome(service=Service(ChromeIns))

#打开百度标签页
driver.get("https://www.baidu.com")

driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("天水")
driver.find_element(By.CSS_SELECTOR, "#su").click()

#后退
time.sleep(2)
driver.back()
#前进
time.sleep(2)
driver.forward()
#刷新
time.sleep(2)
driver.refresh()

#关闭浏览器
time.sleep(2)
driver.quit()

四、文件上传

点击文件上传的场景下会弹出系统窗口,进行文件的选择。

selenium无法识别非web的控件,上传文件窗口为系统自带,无法识别窗口元素。但是可以使用sendkeys来上传指定路径的文件,达到的效果是⼀样的。

cpp 复制代码
driver.get("file:///D:/file/upload.html")
ele = driver.find_element(By.CSS_SELECTOR,"body > div > div >input[type=file]")
ele.send_keys("D:\\file\\test.txt")

五、浏览器参数设置

1. 设置无头模式

cpp 复制代码
#打开浏览器---驱动管理
ChromeIns = ChromeDriverManager().install()
#浏览器参数配置
options = webdriver.ChromeOptions()
#添加无头模式
options.add_argument("-headless")
#创建谷歌浏览器驱动对象
driver = webdriver.Chrome(service=Service(ChromeIns), options=options)

2. 页面加载策略

  • options.page_load_strategy = '加载方式'

页面加载方式主要有三种类型:

|--------|-------------------------------|
| 策略 | 说明 |
| normal | 默认值, 等待所有资源下载 |
| eager | DOM 访问已准备就绪, 但诸如图像的其他资源可能仍在加载 |
| none | 完全不会阻塞WebDriver |

cpp 复制代码
#打开浏览器---驱动管理
ChromeIns = ChromeDriverManager().install()
#浏览器参数配置
options = webdriver.ChromeOptions()
#添加页面加载策略
options.page_load_strategy = 'normal' #等待所有的资源加载完成
options.page_load_strategy = 'eager'  #DOM访问就绪
options.page_load_strategy = 'none'   #完全不阻塞,直接继续往下执行脚本
#创建谷歌浏览器驱动对象
driver = webdriver.Chrome(service=Service(ChromeIns), options=options)
相关推荐
测试老哥20 小时前
Python自动化测试图片比对算法
自动化测试·软件测试·python·测试工具·程序人生·职场和发展·测试用例
互联网杂货铺1 天前
几个常见的Jmeter压测问题
自动化测试·软件测试·测试工具·jmeter·职场和发展·测试用例·压力测试
测试19982 天前
Chrome+Postman做接口测试
自动化测试·软件测试·chrome·测试工具·职场和发展·测试用例·postman
小码哥说测试2 天前
Charles简单压力测试
自动化测试·软件测试·网络协议·selenium·接口测试·压力测试·postman
钱钱钱端3 天前
软件测试工程师面试整理 —— 编程与自动化!
自动化测试·软件测试·selenium·测试工具·面试·职场和发展
钱钱钱端3 天前
技术分享 —— JMeter接口与性能测试实战!
自动化测试·软件测试·python·jmeter·职场和发展·压力测试·性能测试
钱钱钱端3 天前
Pytest参数详解 — 基于命令行模式!
自动化测试·软件测试·python·jmeter·职场和发展·pytest·压力测试
测试19984 天前
什么是自动化测试?
自动化测试·软件测试·python·测试工具·程序人生·职场和发展·测试用例
虹科网络安全4 天前
艾体宝案例丨CircleCI 助力 ANA Systems 打造高效 CI/CD 模型
自动化测试·ci/cd·持续集成·saas平台·circleci
blues_C5 天前
Pytest-Bdd vs Behave:选择最适合的 Python BDD 框架
自动化测试·python·pytest·测试框架·bdd