【发布时间】:2017-07-30 12:32:51
【问题描述】:
这是我的第一篇文章,所以我希望我能正确提问。
正如标题所说,我在通过 Selenium WebDriver 启动 Opera 浏览器时遇到了麻烦(我尝试过 3.1.0 和 3.2.0 版本)。我用java写代码。
我有一个代码,您可以在其中指定要使用的浏览器,然后指定要访问的站点。 Chrome 和 Firefox 运行良好,Opera 让我很痛苦。代码:
public class Browser {
public WebDriver driver;
public void startWebDriver (String browser) {
if (browser == "Chrome") {
driver = new ChromeDriver();
}
else if (browser == "Firefox") {
System.setProperty("webdriver.gecko.driver", "c:\\Users\\...\\webdriver\\geckodriver.exe");
driver = new FirefoxDriver();
}
else if (browser == "Opera") {
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir = c:\\Users\\...\\AppData\\Roaming\\Opera Software\\Opera Stable");
options.setBinary("c:\\Program Files\\Opera\\43.0.2442.1144");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
System.setProperty("webdriver.opera.driver", "c:\\Users\\...\\operadriver.exe");
driver = new OperaDriver(capabilities);
失败:功能 [{message=unknown error: Opera 无法启动 (驱动程序信息:OperaDriver beta=0.1 (87cdb4f0d742fb950d1f0fca1f3f6b483e4fb69c),平台=Windows NT 10.0 x86_64),平台=ANY}] 会话 ID:d02baabe92d8bbfd90641a00d2458aef
现在我在让驱动程序找到甚至找到 Opera 二进制文件时遇到了一些麻烦……但通过手动设置路径来管理。
我很好奇是否有人设法通过 WebDriver 让 Opera 工作。在 GitHub 上,有人声称他设法让它工作,但使用 RemoteWebDriver 同时“破解” Opera 以使用 ChromeDriver 而不是 OperaDriver 运行。我也尝试过,但它也不起作用(这个过程是你发现你的 Opera 是基于哪个 Chromium - 我是 Opera 43,它基于 Chromium 56,它使用了 chromium 驱动程序 2.27 - 更多您可以看到有关该过程的信息:https://github.com/operasoftware/operachromiumdriver/issues/27,但他是在 Mac 上这样做的,我不知道,由于我在 Windows 机器上是否可能存在一些差异。
据我所知,Opera 本身并没有官方支持。
最近有人在 Opera 上运行 Selenium 吗?如果是这样,您是如何实现这一目标的?也许我错过了一些非常基本的东西......
任何提示或建议表示赞赏:)
【问题讨论】:
-
您有什么特殊原因要在 Opera 中测试/运行脚本吗?
-
好吧,我们的扩展程序也可以在 Opera 中运行...我应该对其进行测试 :) 或者您认为它的运行方式与在 Chrome 中完全相同?我知道这两个浏览器非常相似,但我不确定到什么程度。
-
两种浏览器几乎相同。您所说的扩展是指chrome扩展吗?如果是这样,它与opera 100%兼容,反之亦然
-
是的,Chrome 扩展也可以在 Opera 中使用。所以我可以放心地假设它在 Opera 中的工作方式与在 Chrome 中一样吗?如果是这样,它会解决我的问题......但只是出于好奇,真的没有人这样做(自动化 Opera)?
标签: java selenium selenium-webdriver automation opera