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

【自动化测试函数 (下)】Web自动化攻坚:应对加载等待、浏览器导航与无头模式的自动化脚本艺术

🔥艾莉丝努力练剑:个人主页

专栏传送门:《C语言》《数据结构与算法》C/C++干货分享&学习过程记录Linux操作系统编程详解笔试/面试常见算法:从基础到进阶测试开发要点全知道

⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平


🎬艾莉丝的简介:


🎬艾莉丝的测试开发博客简介:


目录

5  ~>  等待

5.1  强制等待

5.2  隐式等待

5.3  显示等待

6  ~>  浏览器导航

6.1  常见操作

6.1.1  打开网站

6.1.2  浏览器的前进、后退、刷新

7  ~>  文件上传

8  ~>  浏览器参数设置

8.1  设置无头模式

8.2  页面加载策略

结尾



5  ~>  等待

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

5.1  强制等待

time.sleep

优点:使用简单,调试的时候比较有效;
缺点:影响运行效率,浪费大量的时间。

5.2  隐式等待

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

implicitly_wait(),参数:秒。

举个例子:

#隐式等待5秒 
driver.implicitly_wait(5)

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

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

5.3  显示等待

5.3.1  显示等待也是一种智能等待

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

WebDriverWait(driver,sec).until(functions)

functions:涉及到selenium.support.ui.ExpectedConditions包下的ExpectedConditions类。

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

ExpectedConditions预定义方法的一些示例——

方法说明
title_is(title)检查页面标题的期望值
title_contains(title)检查标题是否包含区分大小写的子字符串的期望值
visibility_of_element_located((locator, str]))检查元素是否存在于页面的DOM上并且可见的期望值
presence_of_element_located((locator, str]))用于检查元素是否存在于页面的DOM上的期望值
visibility_of(element)检查已知存在于页面DOM上的元素是否可见的期望值
alert_is_present()检查是否出现弹窗

优点:显示等待是智能等待,可以自定义显示等待的条件,操作灵活;
缺点:写法复杂。

5.3.2  隐式等待和显示等待

隐式等待和显示等待一起使用效果如何呢?我们来测试一下——

#隐式等待设置为10s,显⽰等待设置为15s,那么结果会是5+10=15s吗? 
driver.implicitly_wait(10)
wait = WebDriverWait(driver,15)
start = time.time()
try:res = wait.until(EC.presence_of_element_located((By.XPATH,'//*
[@id="2"]/div/div/div[3]/div[1]/div[1]/div/div/div')))
except:end = time.time()print("no such element")
driver.quit()
print(end-start)

结果:重试多次,设置10秒的隐式等待和15秒的显式等待导致20秒后发生超时。

不要混合隐式和显式等待,可能会导致不可预测的等待时间。


6  ~>  浏览器导航

6.1  常见操作

6.1.1  打开网站

driver.get("https://tool.lu/")

6.1.2  浏览器的前进、后退、刷新

driver.back()
driver.forward()
driver.refresh()

案例:百度首页测试在线工具标签入口。


7  ~>  文件上传

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

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


8  ~>  浏览器参数设置

8.1  设置无头模式

options = webdriver.ChromeOptions()
options.add_argument("-headless")
driver = 
webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()),options
=options)

8.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)


结尾

本文的内容到这里就全部结束了,感谢您的阅读!

往期回顾:

【自动化测试函数 (上)】Web自动化测试实战精要:定位、操作与窗口管理三部曲

结语:本期我们学习了测试开发/测试内容中的自动化测试常用函数篇,希望对学习测试开发/测试相关内容的uu有所帮助,不要忘记给博主“一键四连”哦!

🗡博主在这里放了一只小狗,大家看完了摸摸小狗放松一下吧!🗡

૮₍ ˶ ˊ ᴥ ˋ˶₎ა

http://www.dtcms.com/a/545601.html

相关文章:

  • 正向代理工具
  • 攀枝花建设工程有限责任公司网站中国兰州网
  • Kubernetes 部署
  • 网站建设投标人资质要求wordpress邮箱如何解析
  • 鞍山商城网站建设运城手机网站制作
  • 【GitLab/CD】前端 CD
  • 做简报的网站竹制品网站怎么做
  • Kafka使用-Consumer
  • 诸暨网站建设怎么建立微网站?
  • 【Docker】【1.docker常用命令总结】
  • 深圳的网站建设公司的外文名是wordpress异步加载
  • 创客匠人2025万人高峰论坛:如何融合创始人IP与AI?
  • Linux中完成根文件系统的最终准备和切换prepare_namespace函数的实现
  • A800 部署 Qwen2-VL-8B-Instruct 完整指南
  • rust:第一个程序HelloWorld
  • 给新公司建网站用代理访问永久域名
  • 启动Hana失败 FAIL: process hdbdaemon HDB Daemon not running
  • iOS 26 内存占用监控 多工具协同下的性能稳定性分析实战
  • Kubernetes service管理
  • 布吉企业网站建设百度网站两两学一做心得体会
  • 深入仓颉(Cangjie)编程语言:循环的革命——从“命令式”操控到“声明式”安全迭代
  • 画出网站和目录结构图wordpress 自定义表
  • linux gpio errno EBUSY问题举例分析
  • 如何在 macOS 中清理 Homebrew 软件包 ?
  • 手机网站设计立找亿企邦湖南长沙房价2023年最新房价
  • 如何选择徐州网站开发wordpress新建页面位置
  • nestjs引篇
  • apmserv 设置网站目录yy头像在线制作网站
  • 基于YOLO+多模态大模型+人脸识别+视频检索的智慧公安综合研判平台(vue+flask+AI算法)
  • 二手车网站程序德阳网站建设 选哪家好