【问题标题】:Problem with running Opera browser using Selenium through webdrivermanager通过 webdrivermanager 使用 Selenium 运行 Opera 浏览器的问题
【发布时间】:2019-05-06 01:56:33
【问题描述】:

我遇到了使用 Selenium 的 Opera 浏览器的问题。要下载浏览器二进制文件,我正在使用 webdrivermanager 插件(https://github.com/bonigarcia/webdrivermanager)

这是一个实现不同类型浏览器的枚举:

public enum DriverType implements DriverSetup {

    CHROME {
        public WebDriver getWebDriverObject() {
            WebDriverManager.chromedriver().setup();
            return new ChromeDriver();
        }
    },
    FIREFOX {
        public WebDriver getWebDriverObject() {
            WebDriverManager.firefoxdriver().setup();
            return new FirefoxDriver();
        }
    },
    OPERA {
        public WebDriver getWebDriverObject() {
            WebDriverManager.operadriver().setup();
            return new OperaDriver();
        }
    }
}

有一个getWebDriverObject方法的调用:

public class DriverBase {

    public WebDriver driver;

    public WebDriver initializeBrowser() {
        DriverType driverType = DriverType.CHROME;

        try {
            String browser = System.getProperty("browser").toUpperCase();
            driver = DriverType.valueOf(browser).getWebDriverObject();
        } catch (Exception e) {
            System.out.println("No driver specified/Wrong driver specified, default tests running on Chrome");
            driver = driverType.getWebDriverObject();
        }
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.manage().window().maximize();
        return driver;
    }
}

在运行测试之前,我将系统属性浏览器设置为“opera”。这是一个输出。默认情况下,测试在 chrome 中运行,并且 opera 浏览器没有打开,所以它不起作用。我该如何解决?

    ProjectName > Login STANDARD_ERROR
    1160 [Test worker] WARN io.github.bonigarcia.wdm.WebDriverManager - The driver version for Opera No Instance(s) Available. is unknown .
.. trying with latest
    1163 [Test worker] INFO io.github.bonigarcia.wdm.WebDriverManager - Reading https://api.github.com/repos/operasoftware/operachromiumdri
ver/releases to seek operadriver
    1465 [Test worker] INFO io.github.bonigarcia.wdm.WebDriverManager - Latest version of operadriver is 2.41
    1548 [Test worker] INFO io.github.bonigarcia.wdm.Downloader - Using binary driver previously downloaded
    1550 [Test worker] INFO io.github.bonigarcia.wdm.WebDriverManager - Exporting webdriver.opera.driver as C:\Users\me\.m2\re
pository\webdriver\operadriver\win64\2.41\operadriver.exe
    Starting OperaDriver 2.41 on port 37865
    Only local connections are allowed.

Socrates > Login STANDARD_OUT
    No driver specified/Wrong driver specified, default tests running on Chrome

【问题讨论】:

标签: java selenium opera operadriver


【解决方案1】:

此错误消息...

INFO io.github.bonigarcia.wdm.WebDriverManager - Exporting webdriver.opera.driver as C:\Users\me\.m2\repository\webdriver\operadriver\win64\2.41\operadriver.exe
    Starting OperaDriver 2.41 on port 37865
    Only local connections are allowed.

Socrates > Login STANDARD_OUT
    No driver specified/Wrong driver specified, default tests running on Chrome

...暗示虽然您的程序按照system property 配置访问了 OperaDriver,但由于驱动程序规范不匹配 Chrome 浏览器被调用了。

您的主要问题是尽管您已将 system property browser 设置为 opera 仍在 initializeBrowser() 方法中:

DriverType driverType = DriverType.CHROME;

解决方案

修改initializeBrowser()方法如下:

public WebDriver initializeBrowser() {
    DriverType driverType = DriverType.OPERA;

    try {
        String browser = System.getProperty("browser").toUpperCase();
        driver = DriverType.valueOf(browser).getWebDriverObject();
    } catch (Exception e) {
        System.out.println("No driver specified/Wrong driver specified, default tests running on Chrome");
        driver = driverType.getWebDriverObject();
    }

更新

现在你看到的错误是:

org.openqa.selenium.WebDriverException: unknown error: cannot find Opera binary

要解决这个问题你可以关注selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Opera binary with OperaDriver Selenium and Python的讨论

【讨论】:

  • 很抱歉,它不起作用。我初始化这一行 DriverType driverType = DriverType.CHROME; 以确保如果我们没有指定浏览器系统属性,测试将在 chrome 上运行。如果我使用 -Dbrowser=firefox 参数从命令行运行测试,它就可以正常工作并打开 firefox 浏览器。仅当我尝试使用 -Dbrowser=opera 命令时才会崩溃。
  • DriverType driverType = DriverType.OPERA;的结果是所有测试都跳过了,测试结果报告中有错误org.openqa.selenium.WebDriverException: unknown error: cannot find Opera binary
  • @jamal 查看我更新的答案。我为您提供了当前错误的参考org.openqa.selenium.WebDriverException: unknown error: cannot find Opera binary
猜你喜欢
  • 1970-01-01
  • 2016-06-04
  • 1970-01-01
  • 2021-10-04
  • 2023-02-16
  • 1970-01-01
  • 2012-02-17
  • 2017-01-01
  • 2020-01-26
相关资源
最近更新 更多