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

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

目录

一、弹窗

1. 警告弹窗+确认弹窗

2. 提示弹窗

二、等待

1. 强制等待

2. 隐式等待

3. 显示等待

三、浏览器导航

1. 打开网站

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

四、文件上传

五、浏览器参数设置

1. 设置无头模式

2. 页面加载策略


一、弹窗

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

1. 警告弹窗+确认弹窗

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

2. 提示弹窗

alert = driver.switchTo.alert
alert.send_keys("hello")
alert.accept()
alert.dismiss()

二、等待

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

1. 强制等待

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

2. 隐式等待

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

implicitly_wait() 参数:秒

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

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

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

3. 显示等待

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

  • WebDriverWait(driver,sec).until(functions)
  • functions :涉及到 selenium.support.ui.ExpectedConditions 包下的 ExpectedConditions类
  • ExpectedConditions下涉及到的方法:https://www.selenium.dev/selenium/docs/api/py/webdriver_support/selenium.webdriver.support.expected_conditions.html

示例:

from selenium.webdriver.support import expected_conditions as ECwait = 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")

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

  • 前进:driver.back()
  • 后退:driver.forward()
  • 刷新:driver.refresh()
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来上传指定路径的文件,达到的效果是⼀样的。

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. 设置无头模式

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

2. 页面加载策略

  • options.page_load_strategy = '加载方式'

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

策略说明
normal默认值, 等待所有资源下载
eagerDOM 访问已准备就绪, 但诸如图像的其他资源可能仍在加载
none完全不会阻塞WebDriver
#打开浏览器---驱动管理
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)
http://www.lryc.cn/news/446912.html

相关文章:

  • 【必看】2024国赛选题分布情况分析及数模国赛答辩指南~答辩不走弯路
  • 微服务注册中⼼1
  • 我设置了路由器自动切换ip,这会让我的账号登录地址经常改变吗
  • Nginx 限流实战教程和技巧
  • AlphaFold3 | 详解 AlphaFold3 的模型结构及其在不同类型的预测实验中的表现
  • 公交IC卡收单管理系统 多处 SQL注入致RCE漏洞复现
  • 淘客系统开发之卷轴模式系统源码功能分析
  • MoCo中的字典
  • Xcode16 iOS18 编译问题适配
  • 加密解密的艺术:探索Java中的DES算法
  • jQuery——层次选择器
  • MySQL常见面试总结
  • 记录一次学习--委派攻击学习
  • 前端列表数据太多导致页面卡顿就这么处理
  • 机器学习_神经网络_深度学习
  • MT6765/MT6762(R/D/M)/MT6761(MT8766)安卓核心板参数比较_MTK联发科4G智能模块
  • TikTok五分钟开户快速步骤流程!
  • BFS 解决拓扑排序 , 课程表 , 课程表 II , 火星词典
  • web安全攻防渗透测试实战指南_web安全攻防渗透测试实战指南,零基础入门到精通,收藏这一篇就够了
  • 大模型如何赋能智慧城市新发展?
  • 随记——机器学习
  • 【在Linux世界中追寻伟大的One Piece】进程间通信
  • 多路复用IO
  • C++ prime plus-7-編程練習
  • 计算1 / 1 - 1 / 2 + 1 / 3 - 1 / 4 + 1 / 5 …… + 1 / 99 - 1 / 100 的值,打印出结果
  • Linux本地服务器搭建开源监控服务Uptime Kuma与远程监控实战教程
  • JS 历史简介
  • 爬虫逆向学习(七):补环境动态生成某数四代后缀MmEwMD
  • 光伏电站并网验收需要注意什么细节
  • 页面禁用鼠标右键属于反爬虫措施吗 ?