Selenium не может подключиться к ChromeDriver 75 на Mac - PullRequest
2 голосов
/ 26 июня 2019

Мы обновляем ранее работающую конфигурацию теста Selenium / Java / Chrome, до более новых версий:

ChromeDriver           2.35 -> 75.0.3770.90
Selenium Java          3.14 -> 3.141.59

macOS                  10.14.5       (unchanged)
Java                   11.0.3        (unchanged)
Chrome                 75.0.3770.100 (unchanged)

Однако при попытке запустить тест Selenium мы видим:

java.net.ConnectException: Failed to connect to localhost/0:0:0:0:0:0:0:1:28719

Полный стек / журнал:

Starting ChromeDriver 75.0.3770.90 (a6dcaf7e3ec6f70a194cc25e8149475c6590e025-refs/branch-heads/3770@{#1003}) on port 28719
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
Jun 26, 2019 10:45:03 AM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C


...


org.openqa.selenium.WebDriverException: java.net.ConnectException: Failed to connect to localhost/0:0:0:0:0:0:0:1:28719
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'Craigs-iMac.local', ip: '192.168.1.131', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14.5', java.version: '11.0.3'
Driver info: driver.version: RemoteWebDriver

    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:92)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:323)
    at org.openqa.selenium.remote.RemoteWebDriver.findElementByTagName(RemoteWebDriver.java:396)
    at org.openqa.selenium.By$ByTagName.findElement(By.java:320)

Все ресурсы, которые я нашел в этой области, предлагают использовать --whitelisted-ips='', которые не имели эффекта или были связаныдо несовместимых версий Selenium / Chrome / ChromeDriver, проблема которых здесь не возникает.

Обновление: Я могу подтвердить, что драйвер запускается ипрослушивание порта 28719, но затем останавливает в некоторый момент между запуском и выполнением фактического теста.Я не обнаружил ошибок / журналов, связанных с выключением.

Обновление 2: Я отладил, и начальные команды, отправленные на удаленный драйвер, выполнены успешно (setWindowSize()), но эта строка заставляет водителя молча умирать :

((WebStorage) driver).getLocalStorage().setItem("token", token);

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Кажется, что более новые версии ChromeDriver ( или Selenium? Я не знаю. ) запускают Chrome с начальной страницей, расположенной по URL-адресу data:.

Путем добавления этих системных свойств перед созданием ChromeDriver:

System.setProperty("webdriver.chrome.logfile", "/Users/craig/chromedriver.log");
System.setProperty("webdriver.chrome.verboseLogging", "true");

Мне удалось выяснить следующее прямо перед выходом драйвера:

[1561563455.971][INFO]: [01517094c63c0dd609c06a5622afe6b1] RESPONSE ExecuteScript ERROR <unknown>: Failed to read the 'localStorage' property from 'Window': Storage is disabled inside 'data:' URLs.
  (Session info: headless chrome=75.0.3770.100)

Итак, изменив этот вызов в коде моей тестовой утилиты:

((WebStorage) driver).getLocalStorage().setItem("token", token);

К этому:

if (driver.getCurrentUrl().startsWith("data:")) {
    // Driver will quit if we try to access localStorage without a page load
    driver.get("/");
}
((WebStorage) driver).getLocalStorage().setItem("token", token);

Теперь все хорошо. https://i.imgur.com/edBQBeJ.gif

0 голосов
/ 26 июня 2019

Редактирование:

LocalStorage доступен только после запуска любого веб-сайта.т.е. после driver.get

https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/html5/LocalStorage.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...