Selenium 中所有浏览器选项 类 的通用选项对象

Common options object for all browser option classes in Selenium

我之前使用 DesiredCapabilities class 创建了一个使用外部文件(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;
}

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

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

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

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

您需要使用方法merge() from MutableCapabilities Class将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);

您可以在

中找到详细的讨论