我正在升级到Selenium 3,它破坏了我早就写过的函数,它从WebDriver
实例中检索操作系统和浏览器信息。
这用于获取浏览器版本和操作系统名称:
Capabilities cap = ((RemoteWebDriver) driver).getCapabilities();
String browserVersion = cap.getVersion();
String osName = cap.getPlatform().name().toLowerCase();
它不再有效。我得到一个浏览器版本的空字符串和操作系统名称的“any”。我正在使用第三方工具来管理驱动程序二进制文件:
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>1.7.0</version>
</dependency>
这就是我创建驱动程序实例的方法:
FirefoxDriverManager.getInstance().setup();
DesiredCapabilities caps = DesiredCapabilities.firefox();
caps.setCapability("acceptInsecureCerts", true);
WebDriver driver = new FirefoxDriver(caps);
WebDriver.Timeouts timeouts = driver.manage().timeouts();
timeouts.implicitlyWait(5L, TimeUnit.SECONDS);
driver.manage().window().maximize();
return driver;
这与我的Selenium 2代码差别不大。唯一的区别是使用第三方工具的驱动程序管理器,因为使用Firefox现在需要geckodriver。
答案 0 :(得分:1)
我想出来了:
Capabilities cap = ((RemoteWebDriver) driver).getCapabilities();
String browserName = cap.getBrowserName();
String browserVersion = (String)cap.getCapability("browserVersion");
String osName = Platform.fromString((String)cap.getCapability("platformName")).name().toLowerCase();
return browserName + browserVersion + "-" + osName;
可能情况是功能映射的平台名称和浏览器版本密钥发生了变化并破坏了这一功能。无论如何,我现在可以正确检索平台和浏览器版本。