«Синтаксическая ошибка: неопределенная строка в кавычках» и «org.apache.commons.exec.ExecuteException: процесс завершился с ошибкой: 2 (значение выхода: 2)» - PullRequest
0 голосов
/ 06 сентября 2018

Так что я хотел использовать chromedriver на моем Raspberry Pi 3B, и я получил эту ошибку.

Я уже установил версию chromedriver для linux32-бита, и он также находит драйвер. Но во время инициализации драйвера он говорит:

/home/pi/Desktop/chromedriver: 1: /home/pi/Desktop/chromedriver: ELF�4���4: not found
/home/pi/Desktop/chromedriver: 2: /home/pi/Desktop/chromedriver: Syntax error: Unterminated quoted string

После этого я получаю тайм-аут и эту ошибку:

Sep 06, 2018 4:47:43 PM org.openqa.selenium.os.OsProcess checkForError
SEVERE: org.apache.commons.exec.ExecuteException: Process exited with an error: 2 (Exit value: 2)
Exception in thread "main" org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start.
Build info: version: '3.12.0', revision: '7c6e0b3', time: '2018-05-08T15:15:08.936Z'
System info: host: 'raspberrypi', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'arm', os.version: '4.14.34-v7+', java.version: '1.8.0_65'
Driver info: driver.version: ChromeDriver
at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:192)
at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:178)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:79)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:207)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:130)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:181)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:168)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:157)
at xxxxxxxx.initialize(xxxxxxxx.java:39)
at xxxxxxxx.main(xxxxxxxx.java:24)
Caused by: org.openqa.selenium.net.UrlChecker$TimeoutException: Timed out 
waiting for [http://localhost:18689/status] to be available after 20014 ms
at 
org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:100)
at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverServic 
e.java:187)
... 10 more
Caused by: java.util.concurrent.TimeoutException
at java.util.concurrent.FutureTask.get(FutureTask.java:205)
at com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:148)
at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:75)`

Мой код:

System.out.println("Starting Bot..");
    System.setProperty("webdriver.chrome.driver", "/home/pi/Desktop/chromedriver");
    System.out.println("yes");

    Map<String, String> mobileEmulation = new HashMap<>();
    mobileEmulation.put("deviceName", "Nexus 5");
    ChromeOptions chromeOptions = new ChromeOptions();
    chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation);
    chromeOptions.addArguments("--headless");
    System.out.println("yes2");

    driver = new ChromeDriver(chromeOptions);

1 Ответ

0 голосов
/ 07 сентября 2018

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

org.openqa.selenium.os.OsProcess checkForError
SEVERE: org.apache.commons.exec.ExecuteException: Process exited with an error: 2 (Exit value: 2)

... означает, что соответствующая ОС не смогла запустить процесс chromedriver .

Ваша главная проблема - несовместимость между версиями используемых вами двоичных файлов:

  • Ваш Клиент Selenium версия 3.12.0 .
  • Но ваша версия JDK равна 1.8.0_65 , что довольно древнее .

Итак, существует явное несоответствие между JDK v8u65 и Selenium Client v3.12.0 .

Решение

  • Обновление JDK до последних уровней JDK 8u181 .
  • Обновление Селен до текущих уровней Версия 3.14.0 .
  • Обновление ChromeDriver до текущей ChromeDriver v2.41 уровень.
  • Keep Chrome версия между Chrome v66-68 уровнями. ( в соответствии с примечаниями к выпуску ChromeDriver v2.41 )
  • Очистите ваше Рабочее пространство проекта через IDE и Перестройте ваш проект только с необходимыми зависимостями.
  • ( только для WindowsOS ) Используйте инструмент CCleaner , чтобы стереть все рутинные операции ОС до и после выполнения Test Suite .
  • ( только для LinuxOS ) Освободить и освободить неиспользуемую / кэшированную память в Ubuntu / Linux Mint до и после выполнения Test Suite .
  • Если ваша базовая версия Web Client устарела, удалите ее через Revo Uninstaller и установите последнюю версию GA и выпущенную версию Web Клиент .
  • Возьмите Перезагрузка системы .
  • Выполните ваши @Test.
  • Всегда вызывайте driver.quit() в методе tearDown(){} для закрытия и уничтожения экземпляров WebDriver и Web Client . Изящно.
...