【问题标题】:Common options object for all browser option classes in SeleniumSelenium 中所有浏览器选项类的通用选项对象
【发布时间】:2019-04-30 08:23:54
【问题描述】:

我之前使用 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 选项
  • EdgeOptions

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

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

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

【问题讨论】:

    标签: java selenium selenium-webdriver desiredcapabilities mutablecapabilities


    【解决方案1】:

    需要使用MutableCapabilities类中的merge()方法将DesiredCapabilities类型的对象合并到ChromeOptions类型的对象中,并启动WebDriver 和 WebClient 实例通过传递 ChromeOptions 对象如下:

    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” and WebDriverException: Timed out error with ChromeDriver and Chrome找到详细讨论

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多