Selenium4更新了什么

wen python案例 4

本文目录导读:

Selenium4更新了什么

  1. 完全支持 W3C WebDriver 标准(最重要的变化)
  2. 新的定位器 API(更强大、更易读)
  3. Chrome DevTools Protocol 集成(最实用的新功能)
  4. 新的窗口和标签页管理 API
  5. Selenium Grid 的重大改进(适合分布式测试)
  6. 其他重要变化
  7. 升级建议
  8. 总结一句话

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-combinedserver-standalone
  • 官方文档更新:提供了更清晰的示例和最佳实践。

升级建议

  • 如果你正在使用 Selenium 3:强烈建议升级,尤其是为了 W3C 标准化CDP 支持
  • 特别注意:Selenium 4 移除了 Selenium 3 中标记为 过时(deprecated) 的方法,升级前建议先清理代码中的过时使用(如 DesiredCapabilitiesDefaultCapabilitiesFindsById 等)。
  • 兼容性:Selenium 4 支持 Java 8+、Python 3.7+、.NET Core 3.1+、Ruby 2.6+。

总结一句话

Selenium 4 的核心是:拥抱标准(W3C)、开放底层能力(CDP)、简化开发体验(相对定位器 & 新窗口管理)。

抱歉,评论功能暂时关闭!