目录
- Selenium 简介
- Selenium 体系结构
- Selenium 与浏览器的交互机制
- WebDriver 工作流程
- Selenium 支持的浏览器驱动
- 小结
1️⃣ Selenium 简介
- Selenium 是一个流行的开源自动化测试框架,主要用于Web应用的自动化测试。
- 它支持多种编程语言(Java、Python、C#等),以及多种浏览器(Chrome、Firefox、Edge等)。
- 通过模拟用户操作,实现网页的自动化交互。
2️⃣ Selenium 体系结构
Selenium 主要分为以下几个组件:
组件 | 作用 |
---|---|
Selenium IDE | 浏览器插件,录制和回放测试脚本 |
Selenium RC | 旧版远程控制服务器,已逐渐淘汰 |
Selenium WebDriver | 最新主流,直接与浏览器驱动通信进行自动化 |
Selenium Grid | 用于分布式测试,支持多浏览器并行执行 |
3️⃣ Selenium 与浏览器的交互机制
- 核心思想是通过浏览器厂商提供的**浏览器驱动(Browser Driver)**来控制浏览器。
- 浏览器驱动是一个独立的可执行文件,负责将WebDriver的命令转换成浏览器能够理解的原生操作。
- Selenium WebDriver通过**JSON Wire Protocol(旧版)或W3C WebDriver标准协议(新版)**与驱动通信。
- 驱动再通过浏览器的内部接口执行具体操作,比如点击、输入、导航等。
4️⃣ WebDriver 工作流程
- 测试脚本调用WebDriver API(如
driver.get()
,driver.findElement()
)。 - WebDriver 客户端库将API调用封装成HTTP请求,发送给对应浏览器驱动(例如 ChromeDriver)。
- 浏览器驱动解析请求,将其转换为浏览器能执行的命令。
- 浏览器执行命令,如加载页面、点击元素、输入文本等。
- 浏览器驱动将执行结果封装成HTTP响应,返回给WebDriver客户端。
- 测试脚本接收结果,继续下一步操作或断言。
5️⃣ Selenium 支持的浏览器驱动
浏览器 | 驱动名称 | 说明 |
---|---|---|
Google Chrome | ChromeDriver | 官方支持,需与浏览器版本匹配 |
Mozilla Firefox | GeckoDriver | 适配 Firefox 浏览器 |
Microsoft Edge | EdgeDriver | 适配新版基于 Chromium 的 Edge |
Safari | SafariDriver | macOS 自带,需开启远程自动化 |
6️⃣ 小结
- Selenium 工作原理基于客户端API调用与浏览器驱动的通信,驱动控制浏览器实现自动化。
- 采用标准协议保证跨浏览器和语言的兼容性。
- 通过浏览器厂商驱动桥接,Selenium 能够稳定高效地驱动主流浏览器完成自动化任务。
好的!这里给你一个用Python写的简单Selenium自动化示例,帮你快速理解它的使用流程和工作原理。
Selenium Python 示例:打开网页并搜索关键词
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
# 1. 初始化浏览器驱动(以Chrome为例,需下载chromedriver并配置好环境变量)
driver = webdriver.Chrome()
try:
# 2. 打开网页
driver.get("https://www.google.com")
# 3. 找到搜索输入框元素
search_box = driver.find_element(By.NAME, "q")
# 4. 输入关键词并按回车
search_box.send_keys("Selenium 工作原理")
search_box.send_keys(Keys.RETURN)
# 5. 等待搜索结果加载
time.sleep(3)
# 6. 获取搜索结果标题(示例获取第一个结果标题)
first_result = driver.find_element(By.CSS_SELECTOR, "h3")
print("第一个搜索结果标题是:", first_result.text)
finally:
# 7. 关闭浏览器
driver.quit()
说明
- **webdriver.Chrome()**启动Chrome浏览器实例,实际上是调用了
chromedriver
。 - 代码通过
driver.get()
加载网页,模拟浏览器访问。 find_element
定位元素,send_keys
模拟键盘输入,Keys.RETURN
模拟回车。time.sleep()
用于等待网页加载(实际项目中建议用显式等待)。- 最后调用
driver.quit()
关闭浏览器释放资源。
发表回复