Selenium 3 升级到 Selenium 4 应注意哪些

网站建设3年前发布
146 0 0

在自动化技术的不断发展过程中,我们往往也会遇到或做过自动化版本升级的任务,也会遇到各种各样的问题。,对于 Web 自动化测试,目前很多公司还是很热衷使用 Selenium。较新开发的测试脚本可能都在使用 Selenium 4 版本,但是对于已经完成或者旧的测试脚本可能仍是 Selenium 3 版本,甚至是 Selenium 2 版本。,使用 Selenium 3 升级 Selenium 4 时,在某些情况下可能会发生一些问题,对于版本的升级后,会有一些弃用和更改等,本篇进行总结。,Selenium 4 取消了对旧的协议(JSON Wire 协议)的支持,默认情况下使用 W3C WebDriver 标准(协议)。对于大多数情况,此实现不会影响最终用户,主要的例外是 Capabilities 类和 Actions 类。,如果测试功能的结构不符合 W3C,可能会导致会话无法启动。,以下是 W3C WebDriver 标准功能列表:,修改前(Java):,修改后(Java):,在 Java 中,查找元素的方法(FindsBy 接口)已被删除,因为它们仅用于内部使用。,修改前(Java):,修改后(Java):,修改前(Java):,修改后(Java):,检查安装 Selenium 4 并升级你的项目依赖项。,升级 Selenium 的过程取决于正在使用的构建工具。这里介绍 Java 中最常见的 Maven 和 Gradle。所需的最低 Java 版本仍然是 8。,修改前:,修改后:,进行更改后,可以在 pom.xml 文件所在的同一目录上执行 mvn clean compile 命令。,修改前:,修改后:,进行更改后,可以在 build.gradle 文件所在的同一目录上执行 ./gradlew clean build 命令。,使用 Python 最重要的变化是最低版本的要求。,Selenium 4 至少需要 Python 3.7 或更高版本。,从命令行升级,可以执行:,超时中接收到的参数已从预期(长时间,时间单位)切换到预期(持续时间)。,修改前:,修改后:,(2)等待现在也需要不同的参数,WebDriverWait 现在期望的是持续时间,而不是以秒和毫秒为单位的长时间。,FluentWait 中的 withTimeout 和 pollingEvery 方法已从预期(长时间,时间单位)切换到预期(持续时间)。,修改前:,修改后:,可以将一组不同的功能合并到另一个功能集中,这会改变调用对象。现在,需要指定合并操作的结果。,修改前(结果,options 对象被修改了):,修改后(调用的结果,merge 需要分配给一个对象):,在 GeckoDriver 出现之前,Selenium 项目有一个驱动程序来实现自动化 Firefox(版本 < 48)。但是,不再需要此实现,因为它在最新版本的 Firefox 中不起作用。为避免升级到 Selenium 4 时出现重大问题,该 setLegacy 选项将显示为已弃用。建议停止使用旧的实现,只依赖 GeckoDriver。,以下代码将显示 setLegacy,升级后不被推荐使用。,该 BrowserType 接口已经存在了很长时间,但它已被弃用,取而代之的是新 Browser 接口。,修改前:,修改后:,executable_path 已被弃用,请传入 Service 对象。,在 Selenium 4 中,需要 executable_path 从 Service 对象设置驱动程序以防止出现弃用警告(或者不要设置路径,而是确保所需的驱动程序位于系统路径上)。,修改前:,修改后:

© 版权声明

相关文章