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

目录

一、弹窗

[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)
相关推荐
qq_433716952 小时前
使用Postman搞定各种接口token实战
自动化测试·软件测试·测试工具·jmeter·web安全·压力测试·postman
HinsCoder16 小时前
【测试】——Selenium API (万字详解)
自动化测试·笔记·学习·selenium·测试工具·web·测试
测试杂货铺17 小时前
功能测试详解
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
测试杂货铺21 小时前
软件测试基础篇
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
测试19981 天前
Postman环境变量&全局变量设置
自动化测试·软件测试·python·功能测试·测试工具·测试用例·postman
百晓生说测试2 天前
选择性测试优化流程
自动化测试·软件测试·功能测试·程序人生·职场和发展
MJH8272 天前
JMeter全流程性能测试实战!
自动化测试·功能测试·jmeter·单元测试·appium·性能测试·测试工程师
软件测试曦曦2 天前
WEB性能测试-并发测试
前端·自动化测试·软件测试·功能测试·程序人生·职场和发展
Lossya2 天前
【自动化测试】Appium Server如何安装和Appium Server安装困难的原因和解决方法以及常见的一些安装失败的错误和解决方法
自动化测试·测试工具·npm·node.js·appium·自动化