1

我之前使用 DesiredCapabilities 类创建一个通用方法来设置浏览器的所有功能,使用外部文件(key=value 格式)。这是我的代码

public DesiredCapabilities setWebDriverCapabilities(String browser) throws IOException {

    switch (browser) {
        case "ie":
            capabilities = new DesiredCapabilities().internetExplorer();
            break;
        case "firefox":
            capabilities = new DesiredCapabilities().firefox();
            break;
        case "chrome":
            capabilities = new DesiredCapabilities().chrome();
            break;
        case "edge":
            capabilities = new DesiredCapabilities().edge();
            break;
        case "safari":
            capabilities = new DesiredCapabilities().safari();
            break;
        default:
            capabilities = null;
    }

    Properties prop = new Properties();
    String FS = File.separator;
    prop.load(new FileInputStream("src" + FS + "test" + FS + "resources" + FS + browser + ".capabilities"));
    Set < Object > keys = prop.keySet();
    for (Object k: keys) {
        String key = (String) k;
        capabilities.setCapability(key, prop.getProperty(key));
    }
    return capabilities;
}

我发现它建议使用选项类,因为某些功能类将被弃用。所以我试图用一种适用于所有 Options 类的不同方法替换这个方法

  • Firefox 选项
  • Chrome选项
  • InternetExplorer 选项
  • Safari 选项
  • 边缘选项

我找不到上述所有类的通用对象类型,因此我可以创建一个使用 DesiredCapabilities 的类似方法。

我想从这个新方法返回一个通用对象类型,以便我可以将它用于所有驱动程序初始化,例如

driver = new ChromeDriver(setOptions());
driver = new FirefoxDriver(setOptions());
4

1 回答 1

0

您需要使用 MutableCapabilities 类中的方法merge()DesiredCapabilities类型的对象合并ChromeOptions类型的对象中,并通过传递ChromeOptions对象来启动WebDriverWebClient实例,如下所示:

DesiredCapabilities cap = DesiredCapabilities.chrome();
cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
ChromeOptions options = new ChromeOptions();
options.merge(cap);
driver = new ChromeDriver(options);

您可以在How to address “The constructor ChromeDriver(Capabilities) is deprecated” 和 WebDriverException: Timed out error with ChromeDriver and Chrome中找到详细讨论

于 2018-11-28T12:23:49.587 回答