java - Selenium 中所有浏览器选项类的通用选项对象
问题描述
我之前使用 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());
解决方案
您需要使用 MutableCapabilities 类中的方法merge()
将DesiredCapabilities类型的对象合并到ChromeOptions类型的对象中,并通过传递ChromeOptions对象来启动WebDriver和WebClient实例,如下所示:
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中找到详细讨论
推荐阅读
- javascript - 单击按钮重定向到不同的 HTML 文件后,如何在 DOM 上打印特定的数组索引?
- unity3d - Unity 3D Quaternion Rotations:帮助我避免 Gimbal 锁定并进行平滑旋转
- c - 初学者问题 - 为什么 C 使用 * 来声明指针而不是 &?
- algorithm - 识别特定国家/地区的 Namaz 时间
- excel - 如何通过表格运行列范围并使用 VBA 将其粘贴到另一列中?
- python - Python参数的奇怪不匹配
- python-3.x - 在脚本中的环境之间来回切换(例如,Jupyter Notebooks)
- javascript - 使用 .JSON 文件的 JavaScript 变量
- python - regex to remove every hyphen except between two words
- python - 在 colab 崩溃模型中不使用recurrent_dropout?