Selenium常用函数(浏览器导航,文件上传,浏览器参数设置)

浏览器导航

这部分是Selenium中最基础的页面操作,用于控制浏览器的前进、后退、刷新等行为。

|--------|--------------------------------|--------------------|
| 操作 | 代码 | 说明 |
| 打开网站 | driver.get("https://tool.lu/") | 加载指定URL,等待页面完全加载完成 |
| 后退 | driver.back() | 回到浏览器历史记录的上一页 |
| 前进 | driver.forward() | 前进到浏览器历史记录的下一页 |
| 刷新 | driver.refresh() | 重新加载当前页面 |

注意: get()会等待页面加载完成后才执行后续代码;back()/forward()/refresh() 也会触发页面加载,实际项目中建议配合显式等待使用。


文件上传

核心原理

  • 常规文件上传会弹出系统窗口,Selenium无法直接识别和操作系统控件。
  • 但对于<input type="file" /> 类型的上传元素,可以直接通过send_keys() 传入文件绝对路径来实现上传,绕过系统窗口。

示例代码

复制代码
# 打开包含上传控件的页面
driver.get("file:///D:/file/selenium4html/selenium-html/upload.html")
# 定位文件上传input元素
ele = driver.find_element(By.CSS_SELECTOR, "body > div > div > input[type=file]")
# 传入文件绝对路径,完成上传
ele.send_keys("D:\\file\\test.txt")

关键要点

  • 必须定位到页面中的<input type="file" /> 元素,不能定位外层按钮。
  • 路径需使用绝对路径 ,Windows系统中路径分隔符可使用双反斜杠 \\ 或正斜杠 /

浏览器参数设置

1) 无头模式(Headless)

让浏览器在后台运行,不显示GUI界面,适合CI/CD服务器或自动化测试环境。

示例代码
复制代码
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager

options = webdriver.ChromeOptions()
# 开启无头模式
options.add_argument("--headless=new")  # 新版Chrome推荐写法
driver = webdriver.Chrome(
    service=ChromeService(ChromeDriverManager().install()),
    options=options
)

2) 页面加载策略

控制Selenium等待页面加载完成的时机,优化测试执行速度。

|------------|----------------------------------|--------------------|
| 策略 | 说明 | 适用场景 |
| (默认)normal | 等待所有资源(图片、CSS、JS)下载完成后,才认为页面加载完成 | 大多数常规场景 |
| eager | 等待DOM加载完成,但不等待图片等其他资源 | 页面资源加载慢、不影响核心交互的场景 |
| none | 不等待页面加载,立即执行后续代码 | 配合显式等待手动控制所有加载流程 |

示例代码(以eager为例)
复制代码
options = webdriver.ChromeOptions()
options.page_load_strategy = "eager"
driver = webdriver.Chrome(
    service=ChromeService(ChromeDriverManager().install()),
    options=options
)

注意:使用eager或none时,必须配合显式等待,否则可能出现元素未加载完成就执行操作的问题。

相关推荐
小白上线*^_^*4 小时前
Jmeter从入门到精通指南
软件测试·测试工具·jmeter·接口测试·测试工程师
goodesocket18 小时前
手机LPDDR芯片测试座厂商适配性强
测试工具
ClouGence1 天前
自动化测试,如何让每个用例都保持登录状态?
selenium·测试
ClouGence1 天前
手动测试工程师有必要学自动化测试吗?手工测试还有前途吗?
selenium·测试·求职
小小测试开发2 天前
Playwright vs Selenium vs Cypress:从浏览器协议到 API 设计的全面对比与实测
人工智能·selenium·测试工具
我的xiaodoujiao2 天前
快速学习Python基础知识详细图文教程9--函数进阶
开发语言·python·学习·测试工具
川石课堂软件测试2 天前
安全测试|常见SQL注入攻击方式、实例及预防
服务器·数据库·sql·功能测试·测试工具·安全·单元测试
一孤程2 天前
Pytest+Selenium搭建自动化框架-保姆级实战教程
selenium·自动化·pytest
天才测试猿3 天前
Selenium自动化测试网页加载太慢怎么解决?
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
李宸净4 天前
Web自动化测试selenium+python
前端·python·selenium