Проблема с запуском браузера Opera с использованием Selenium через webdrivermanager - PullRequest
0 голосов
/ 04 декабря 2018

У меня проблема с браузером Opera, использующим Selenium.Для загрузки двоичных файлов браузера я использую плагин 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

1 Ответ

0 голосов
/ 04 декабря 2018

Это сообщение об ошибке ...

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

... подразумевает, что, хотя ваша программа получила доступ к OperaDriver согласно system property конфигурации, но из-за несоответствия в драйвереспецификация Браузер Chrome .

Ваша основная проблема заключается в том, что вы установили system property браузер на опера , все еще находящаяся в пределах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: Сообщение: неизвестная ошибка: не удается найти бинарный файл Opera с OperaDriver Selenium и Python

...