浏览器导航
这部分是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时,必须配合显式等待,否则可能出现元素未加载完成就执行操作的问题。