目录
1、前言
在自动化技术的不断发展过程中,我们往往也会遇到或做过自动化版本升级的任务,也会遇到各种各样的问题。
对于 Web 自动化测试,目前很多公司还是很热衷使用 Selenium。较新开发的测试脚本可能都在使用 Selenium 4 版本,但是对于已经完成或者旧的测试脚本可能仍是 Selenium 3 版本,甚至是 Selenium 2 版本。
使用 Selenium 3 升级 Selenium 4 时,在某些情况下可能会发生一些问题,对于版本的升级后,会有一些弃用和更改等,本篇进行总结。
2、关于支持的协议
Selenium 4 取消了对旧的协议(JSON Wire 协议)的支持,默认情况下使用 W3C WebDriver 标准(协议)。对于大多数情况,此实现不会影响最终用户,主要的例外是 Capabilities 类和 Actions 类。
3、Capabilities
如果测试功能的结构不符合 W3C,可能会导致会话无法启动。
以下是 W3C WebDriver 标准功能列表:
browserName
browserVersion (替换 version)
platformName (替换 platform)
acceptInsecureCerts
pageLoadStrategy
proxy
timeouts
unhandledPromptBehavior
修改前(Java):
DesiredCapabilities caps = DesiredCapabilities.firefox();
caps.setCapability("platform", "Windows 10");
caps.setCapability("version", "92");
caps.setCapability("build", myTestBuild);
caps.setCapability("name", myTestName);
WebDriver driver = new RemoteWebDriver(new URL(cloudUrl), caps);
修改后(Java):
FirefoxOptions browserOptions = new FirefoxOptions();
browserOptions.setPlatformName("Windows 10");
browserOptions.setBrowserVersion("92");
Map<String, Object> cloudOptions = new HashMap<>();
cloudOptions.put("build", myTestBuild);
cloudOptions.put("name", myTestName);
browserOptions.setCapability("cloud:options", cloudOptions);
WebDriver driver = new RemoteWebDriver(new URL(cloudUrl), browserOptions);
4、在Java中查找元素的方法
在 Java 中,查找元素的方法(FindsBy 接口)已被删除,因为它们仅用于内部使用。
1、查找单个元素 findElement*
修改前(Java):
driver.findElementByClassName("className");
driver.findElementByCssSelector(".className");
driver.findElementById("elementId");
driver.findElementByLinkText("linkText");
driver.findElementByName("elementName");
driver.findElementByPartialLinkText("partialText");
driver.findElementByTagName("elementTagName");
driver.findElementByXPath("xPath");
修改后(Java):
driver.findElement(By.className("className"));
driver.findElement(By.cssSelector(".className"));
driver.findElement(By.id("elementId"));
driver.findElement(By.linkText("linkText"));
driver.findElement(By.name("elementName"));
driver.findElement(By.partialLinkText("partialText"));
driver.findElement(By.tagName("elementTagName"));
driver.findElement(By.xpath("xPath"));
2、查找多个元素 findElements*
修改前(Java):
driver.findElementsByClassName("className");
driver.findElement

本文介绍了从Selenium3升级到Selenium4的关键变更,包括支持的协议更新、Capabilities配置变化、查找元素方法调整、依赖升级步骤及潜在错误处理。特别针对Java和Python环境提供了详细的示例。
最低0.47元/天 解锁文章
1297

被折叠的 条评论
为什么被折叠?



