Тайм-аут ChromeDriver при развертывании (Selenium) - PullRequest
0 голосов
/ 25 апреля 2018

У меня проблемы с запуском ChromeDriver для Selenium при развертывании моего приложения.Это приложение Liberty с WebSphere Application Server в Bluemix.

Приложение отлично работает, когда используется тестовый драйвер и мои локальные экземпляры WAS.При запуске приложения в Bluemix я продолжаю получать ошибки

Error 500: org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start. Build info: version: '3.11.0', revision: 'e59cfb3', time: '2018-03-11T20:26:55.152Z' System info: host: 'ab262009-655a-4b7e-72a8-eb5250d668ac', ip: '10.254.1.142', os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-75-generic', java.version: '1.8.0_161' Driver info: driver.version: ChromeDriver

В моих журналах отображаются эти две ошибки

[err] /home/vcap/app/wlp/usr/servers/projectname/resources/chromedriver: 1: /home/vcap/app/wlp/usr/servers/projectname/resources/chromedriver: Syntax error: Unterminated quoted string
APP/0[ERROR ] org.apache.commons.exec.ExecuteException: Process 
exited with an error: 2 (Exit value: 2)
APP/0org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start.
APP/0[ERROR ] SRVE0777E: Exception thrown by application class 'org.openqa.selenium.remote.service.DriverService.waitUntilAvailable:192'
APP/0Caused by: org.openqa.selenium.net.UrlChecker$TimeoutException: Timed out waiting for [http://localhost:31300/status] to be available after 20018 ms

или

/home/vcap/app/wlp/usr/servers/projectname/resources/chromedriver: Syntax error: "(" unexpected

Исходный код:

public static void runTest(String os) throws InterruptedException {

    // Detect Operating System user is running
    System.out.println("Operating system read in: " + os);
    // Initialize driver

    if (os.contains("Mac")) {
        System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "/resources/chromedriver");
    } else {
        System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "/resources/chromedriver_windows.exe");
    }
    WebDriver driver = new ChromeDriver();

Ошибка в строке создания объекта ChromeDriver.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

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

[err] /home/vcap/app/wlp/usr/servers/projectname/resources/chromedriver: 1: /home/vcap/app/wlp/usr/servers/projectname/resources/chromedriver: Syntax error: Unterminated quoted string

... подразумевает, что строка System.setProperty() имеет синтаксическую ошибку , в частности, неопределенная строка в кавычках

Ваша главная проблема в System.setProperty() с path.separator следующим образом:

Решение

Измените строку System.setProperty() следующим образом:

if (os.contains("Mac")) {
    String user_dir = System.getProperty("user.dir");
    System.setProperty("webdriver.chrome.driver", user_dir+"/resources/chromedriver");
    } else {
    System.setProperty("webdriver.chrome.driver", user_dir+"/resources/chromedriver_windows.exe");

Обновление

Поскольку вы все еще видите ту же ошибку, вы можете попробовать следующую альтернативу:

if (os.contains("Mac")) {
    System.setProperty("webdriver.chrome.driver", "./resources/chromedriver");
    } else {
    System.setProperty("webdriver.chrome.driver", "./resources/chromedriver_windows.exe");
0 голосов
/ 25 апреля 2018

Кажется, вы не настраиваете свое двоичное местоположение до создания объекта WebDriver.Обновите метод runTest, как описано ниже, а затем попробуйте.

public static void runTest(String os) throws InterruptedException {

    // Detect Operating System user is running
    System.out.println("Operating system read in: " + os);
    // Initialize driver
    String DRIVER_BINARY_LOCATION;
    switch(os.toUpperCase()){

        case "MAC":
            DRIVER_BINARY_LOCATION = System.getProperty("user.dir") + "/resources/chromedriver");
            break;
        case "LINUX":
            DRIVER_BINARY_LOCATION = System.getProperty("user.dir") + "/resources/chromedriver");
            break;
        case "WINDOW":
            DRIVER_BINARY_LOCATION = System.getProperty("user.dir") + "/resources/chromedriver.exe");
            break;
        default:
            throw new IllegalArgumentException("Any meaningful message");
    }
    System.setProperty("webdriver.chrome.driver", DRIVER_BINARY_LOCATION);
    WebDriver driver = new ChromeDriver();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...