gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 10:00:46 25 4
gpt4 key购买 nike

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

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;
}

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

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

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

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

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

最佳答案

您需要使用方法merge()来自MutableCapabilities用于将 DesiredCapability 类型的对象合并到 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” and WebDriverException: Timed out error with ChromeDriver and Chrome 中找到详细讨论

关于java - Selenium 中所有浏览器选项类的通用选项对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53519260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com