【问题标题】:Opera WebDriver wont launch Opera (Selenium 3.1.0)Opera WebDriver 不会启动 Opera (Selenium 3.1.0)
【发布时间】: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


【解决方案1】:

我能够通过以下方式在 Opera 46、Windows 10 中针对 webdriver 3.4.0(本地运行)运行测试:

System.setProperty("webdriver.chrome.driver", "operadriver.exe");
ChromeOptions options = new ChromeOptions();
options.setBinary("C:\\Program Files\\Opera\\46.0.2597.39\\opera.exe");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
driver = new ChromeDriver(capabilities);

【讨论】:

    【解决方案2】:

    不确定您是否仍在寻找答案,但这是我在 ruby​​ lang 中使用 selenium 3.3 实现歌剧执行的方法。

    语法
    service = Selenium::WebDriver::Chrome::Service.new("<path to operadriver>", <any free port>, {optional so leave it blank}) service.start

    例如:
    service = Selenium::WebDriver::Chrome::Service.new("/usr/local/bin/operadriver", 12345, {}) service.start cap = Selenium::WebDriver::Remote::Capabilities.chrome('operaOptions' => {'binary' => '/Applications/Opera.app/Contents/MacOS/Opera', 'args' => ["--ignore-certificate-errors"]}) driver = Selenium::WebDriver.for(:remote, :url => service.uri, :desired_capabilities => cap)

    在java中也有一个非常相似的方法来做同样的事情,但是步骤或逻辑保持不变。
    1) 在某个空闲端口上启动 ChromeService
    2) 启动 chrome 远程 caps,但传递 opera 的二进制文件和 --ignore-certificate-errors 选项
    3) 将 url 从服务和 caps 传递到远程 webdriver

    【讨论】:

      【解决方案3】:

      使用最新的 Selenium 3.13 和 OperaDriver v2.37 你可以这样做:

      string LibraryDir = new FileInfo((new System.Uri(Assembly.GetExecutingAssembly().CodeBase)).AbsolutePath).DirectoryName.Replace("%20", " ");
      OperaOptions ooptions = new OperaOptions();
      ooptions.BinaryLocation = @"C:\Program Files\Opera\54.0.2952.54\opera.exe";
      _Browser = new OperaDriver(LibraryDir, ooptions);
      

      LibraryDir 是operadriver.exe 的位置(应该安装Nuget 包) BinaryLocation 应该指向可执行的 Opera 浏览器!

      【讨论】:

        猜你喜欢
        • 2022-06-14
        • 2014-09-03
        • 1970-01-01
        • 2020-05-05
        • 1970-01-01
        • 2016-06-04
        • 2015-09-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多