本文目录导读:

- 完全支持 W3C WebDriver 标准(最重要的变化)
- 新的定位器 API(更强大、更易读)
- Chrome DevTools Protocol 集成(最实用的新功能)
- 新的窗口和标签页管理 API
- Selenium Grid 的重大改进(适合分布式测试)
- 其他重要变化
- 升级建议
- 总结一句话
Selenium 4 是一次重大的架构升级和功能更新,主要变化集中在 WebDriver 的标准化、新 API 的引入 以及 对现代浏览器和开发流程的更好支持。
以下是 Selenium 4 的核心更新内容,按重要程度排序:
完全支持 W3C WebDriver 标准(最重要的变化)
- 旧版(Selenium 3): 使用的是 JSON Wire Protocol(过时协议),浏览器需要将 W3C 命令“翻译”成自己的命令,有时会出错或不兼容。
- 新版(Selenium 4): 原生支持 W3C WebDriver 标准,浏览器直接理解 WebDriver 命令,无需转换。
- 好处:
- 更好的稳定性:跨浏览器兼容性显著提升。
- 更简洁的代码:不再需要
DesiredCapabilities等繁琐配置。 - 性能提升:通信过程更直接,速度更快。
新的定位器 API(更强大、更易读)
引入了 相对定位器(Relative Locator),让你可以基于元素与其他元素的位置关系来定位。
// 示例:定位“登录按钮”上方的“用户名输入框”
WebElement loginButton = driver.findElement(By.id("login"));
WebElement usernameField = driver.findElement(withTagName("input")
.above(loginButton));
支持的方法:above()、below()、toLeftOf()、toRightOf()、near()。
Chrome DevTools Protocol 集成(最实用的新功能)
Selenium 4 内置了对 CDP(Chrome DevTools Protocol) 的支持,允许你直接操作浏览器的开发者工具功能,而无需安装其他依赖。
-
模拟地理位置:
from selenium import webdriver driver = webdriver.Chrome() driver.execute_cdp_cmd("Emulation.setGeolocationOverride", { "latitude": 40.7128, "longitude": -74.0060, "accuracy": 1 }) -
模拟网络条件(测试弱网环境):
driver.execute_cdp_cmd("Network.enable", {}) driver.execute_cdp_cmd("Network.emulateNetworkConditions", { "offline": False, "latency": 100, "downloadThroughput": 500, "uploadThroughput": 500 }) -
捕获控制台日志、网络请求等。
新的窗口和标签页管理 API
操作浏览器窗口变得简单且优雅。
-
创建新标签页/窗口(无需 switchTo):
// 打开新标签页并自动切换过去 driver.switchTo().newWindow(WindowType.TAB); // 打开新窗口并自动切换过去 driver.switchTo().newWindow(WindowType.WINDOW);
-
获取窗口 ID 列表:
window_ids = driver.window_handles # 功能不变,但更稳定
Selenium Grid 的重大改进(适合分布式测试)
- 完全重写:使用现代技术(Node.js、WebSockets)替换了旧架构。
- 简化部署:启动更简单,只需一个
.jar文件。 - 支持 Docker 和 Kubernetes:更容易在容器化环境中运行。
- 主动监控:可以实时查看节点状态、会话队列和日志。
其他重要变化
- 删除过时功能:移除了
ExpectedConditions中的elementToBeClickable的旧实现(现在使用新的 WebDriverWait)。 - 改进的 Actions API:更流畅的键盘和鼠标操作(如拖拽、悬停)。
- POM.xml / Build 简化:所有模块(Core、Grid、Remote)整合到一个
selenium-java包中,不再需要分别添加client-combined和server-standalone。 - 官方文档更新:提供了更清晰的示例和最佳实践。
升级建议
- 如果你正在使用 Selenium 3:强烈建议升级,尤其是为了 W3C 标准化 和 CDP 支持。
- 特别注意:Selenium 4 移除了 Selenium 3 中标记为 过时(deprecated) 的方法,升级前建议先清理代码中的过时使用(如
DesiredCapabilities、DefaultCapabilities、FindsById等)。 - 兼容性:Selenium 4 支持 Java 8+、Python 3.7+、.NET Core 3.1+、Ruby 2.6+。
总结一句话
Selenium 4 的核心是:拥抱标准(W3C)、开放底层能力(CDP)、简化开发体验(相对定位器 & 新窗口管理)。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播