我想从我当前运行的 ChromeDriver 中了解以下信息:
根据this页面,它应该是 ChromeDriver 返回功能的一部分:
到目前为止我尝试过的:
Capabilities caps = DesiredCapabilities.chrome();
System.out.println(caps.getCapability("userDataDir"));
System.out.println(caps.getCapability("chrome.chromedriverVersion"));
两者都给我空。我确实知道我没有手动设置 ChromeOptions“--user-data-dir”,但我仍然知道 ChromeDriver 默认情况下会使用某个目录。
版本也是如此,我们可以随意检索当前驱动程序的版本,对吗?
我在这里缺少什么?
提前致谢!
更新1:
我在将 caps
实例作为参数传递给 ChromeDriver 构造函数之前调用上面的代码。
这是一个更具洞察力的片段:
public class Driver implements WebDriver {
private WebDriver webDriver;
private Capabilities caps;
public Driver(){
caps = DesiredCapabilities.chrome();
caps.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
caps.setCapability(CapabilityType.SUPPORTS_APPLICATION_CACHE, true);
caps.setCapability(CapabilityType.SUPPORTS_ALERTS, true);
caps.setCapability(CapabilityType.SUPPORTS_FINDING_BY_CSS, true);
//Am I not doing this correctly?
System.out.println(caps.getCapability("userDataDir"));
System.out.println(caps.getCapability("chrome.chromedriverVersion"));
webDriver = new ChromeDriver(caps);
}
}
更新2: 关于版本号,我意识到每当我这样做
Capabilities caps = DesiredCapabilities.chrome();
DesiredCapability 类正在将空白字符串作为参数传递给版本号。
话虽如此,有什么方法可以获取当前的 chrome 驱动程序版本(如下框所示)?我知道这些信息存储在某个地方,但我不知道如何获取它。
至于临时用户数据文件夹,即使在查看了功能和创建的 webdriver 对象后,我仍然不知道如何获取它。
感谢您的帮助!
最佳答案
感谢 @MikeJRamsey56 的选角技巧,我成功地解决了这个问题。
这是一个肮脏的(但)有效的解决方案。希望这可以帮助其他人。
public class Driver implements WebDriver {
private WebDriver webDriver;
private Capabilities caps;
public Driver(){
System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY, "the/driver/path/chromedriver.exe");
caps = DesiredCapabilities.chrome();
webDriver = new ChromeDriver(caps);
//Cast webDriver instance to RemoteWebDriver
caps = ((RemoteWebDriver) webDriver).getCapabilities();
//Call getCapability and cast to Map.
//This line will give a Type Safety warning, hence the "dirty" in my solution.
Map<String, String> a = (Map<String, String>) caps.getCapability("chrome");
System.out.println(String.format("Driver Version: %s", a.get("chromedriverVersion")));
System.out.println(String.format("Temp dir: %s", a.get("userDataDir")));
}
}
关于java - Selenium Java : How to get current ChromeDriver instance's user directory and version using ChromeCapabilities,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44629016/