WebDriverException: неизвестная ошибка: файл DevToolsActivePort не существует при попытке запуска браузера Chrome - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь запустить Chrome с URL-адресом, браузер запускается, и после этого ничего не происходит.

Через 1 минуту появляется ошибка ниже:

Unable to open browser with url: 'https://www.google.com' (Root cause: org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
  (Driver info: chromedriver=2.39.562718 (9a2698cba08cf5a471a29d30c8b3e12becabb0e9),platform=Windows NT 10.0.15063 x86_64) (WARNING: The server did not provide any stacktrace information)

Моя конфигурация:

Chrome: 66 ChromeBrowser: 2.39.56

PS В Firefox все отлично работает

Ответы [ 18 ]

0 голосов
/ 30 июля 2018

Я решаю эту проблему, установив yum -y install gtk3-devel gtk3-devel-docs ", все работает нормально

Моя рабочая среда:

Selenium Version 3.12.0
ChromeDriver Version v2.40
Chrome 68 level

До:
enter image description here enter image description here

После:
enter image description here enter image description here

0 голосов
/ 13 июля 2018

У меня была такая же проблема, но в моем случае Chrome ранее был установлен в пользовательскую временную папку, после чего был переустановлен в Program files.Таким образом, любое из представленных здесь решений не помогло мне.Но если указать путь к chrome.exe, все работает:

chromeOptions.setBinary("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");

Надеюсь, это кому-нибудь поможет =)

0 голосов
/ 13 июня 2018

У меня была такая же проблема в питоне.Вышеуказанное помогло.Вот что я использовал в python -

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('/path/to/your_chrome_driver_dir/chromedriver',chrome_options=chrome_options)
0 голосов
/ 08 июня 2018

Обновление:

Мне удалось решить проблему, и теперь я могу получить доступ к Chrome с нужным URL.

Результаты попыткипредоставленные решения:

Я перепробовал все настройки, как указано выше, но мне не удалось решить проблему

Объяснение относительно проблемы:

Согласно моим наблюдениям, файл DevToolsActivePort не существует, это вызвано тем, что chrome не может найти свою ссылку в папке scoped_dirXXXXX.

Действия, предпринятые для решения проблемы

  1. Я убил все процессы Chrome и процессы драйвера Chrome.
  2. Добавлен приведенный ниже код для вызова Chrome

    System.setProperty("webdriver.chrome.driver","pathto\\chromedriver.exe");    
    ChromeOptions options = new ChromeOptions();
    options.setExperimentalOption("useAutomationExtension", false);
    WebDriver driver = new ChromeDriver(options);
    driver.get(url);
    

Использование вышеуказанногоЯ смог решить проблему.

Спасибо за ваши ответы.

0 голосов
/ 23 июля 2019

В моем случае я нахожусь в среде Kubernetes, где я не могу использовать TMPDIR по умолчанию, потому что он заполнит временный каталог мусором.

Так что я использовал это, чтобы использовать другой tmpdir:

driver = new ChromeDriver(new ChromeDriverService.Builder()
                    .withEnvironment(ImmutableMap.of("TMPDIR", customTmpPath))
                    .build(), options);

Но теперь, когда я обновил все до последней версии, это больше не работает.Мне нужно будет найти новый способ сделать это.

0 голосов
/ 19 ноября 2018

В моем случае я пытался создать исполняемый файл jar в ОС Windows с браузером Chrome и хочу запустить его в автономном режиме в unix-боксе с CentOs на нем.И я указывал свой двоичный файл на драйвер, который я скачал и упаковал с моим набором.Для меня эта проблема продолжает возникать независимо от добавления ниже:

ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
options.addArguments("--no-sandbox");
System.setProperty("webdriver.chrome.args", "--disable-logging");
System.setProperty("webdriver.chrome.silentOutput", "true");
options.setBinary("/pointing/downloaded/driver/path/in/automationsuite");
options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
options.addArguments("disable-infobars"); // disabling infobars
options.addArguments("--disable-extensions"); // disabling extensions
options.addArguments("--disable-gpu"); // applicable to windows os only
options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
options.addArguments("window-size=1024,768"); // Bypass OS security model
options.addArguments("--log-level=3"); // set log level
options.addArguments("--silent");//
options.setCapability("chrome.verbose", false); //disable logging
driver = new ChromeDriver(options);

Решение, которое я пробовал и работал для меня, это загрузить Chrome и его инструменты на хост-компьютере VM / Unix, установитьи укажите двоичный файл на это в пакете автоматизации и бинго!Это работает:)

Команда загрузки:

wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

Команда установки:

sudo yum install -y ./google-chrome-stable_current_*.rpm

Пакет обновлений с указанным ниже двоичным путем google-chrome:

options.setBinary("/opt/google/chrome/google-chrome");

И .. это работает!

0 голосов
/ 08 августа 2019

Как указано в этот другой ответ :

Это сообщение об ошибке ... означает, что ChromeDriver не смог инициировать / порождать новый WebBrowser, то есть сеанс браузера Chrome.

Среди возможных причин я хотел бы отметить тот факт, что, если вы запускаете Chromium без головы через Xvfb, вам может понадобится export DISPLAYпеременная: в моем случае у меня были (как рекомендовано) опции --disable-dev-shm-usage и --no-sandbox, все работало нормально, но в новой установке, работающей на последней (на момент написания) версии Ubuntu 18.04, эта ошибка сталаи единственное возможное исправление состояло в том, чтобы выполнить export DISPLAY=":20" (ранее запустив Xvfb с Xvfb :20&).

0 голосов
/ 01 июня 2018

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

org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist 

... подразумевает, что ChromeDriver не смог инициировать / создать новый WebBrowser т.е. Браузер Chrome сеанс.

Ваши тесты кода и информация о версиях всех двоичных файлов дала бы нам подсказку о том, что происходит не так.

Однако в соответствии с Добавьте --disable-dev-shm-using к флагам запуска по умолчанию кажется, добавление аргумента --disable-dev-shm-usage временно решит проблему.

Если вы хотите начать / охватить новый сеанс Chrome Browser , вы можете использовать следующее решение:

System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized"); // open Browser in maximized mode
options.addArguments("disable-infobars"); // disabling infobars
options.addArguments("--disable-extensions"); // disabling extensions
options.addArguments("--disable-gpu"); // applicable to windows os only
options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
options.addArguments("--no-sandbox"); // Bypass OS security model
WebDriver driver = new ChromeDriver(options);
driver.get("https://google.com");

disable-dev-shm-using

Согласно base_switches.cc disable-dev-shm-usage, кажется, действительным только в ОС Linux :

#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
// The /dev/shm partition is too small in certain VM environments, causing
// Chrome to fail or crash (see http://crbug.com/715363). Use this flag to
// work-around this issue (a temporary directory will always be used to create
// anonymous shared memory files).
const char kDisableDevShmUsage[] = "disable-dev-shm-usage";
#endif

Вобсуждение Добавить параметр для использования / tmp вместо / dev / shm Дэвид упоминает:

Я думаю, это будет зависеть от того, как смонтированы / dev / shm и / tmp.Если они оба смонтированы как tmpfs, я предполагаю, что не будет никакой разницы.если по какой-то причине / tmp не отображается как tmpfs (и я думаю, что по умолчанию systemd отображает как tmpfs), управление общей памятью chrome всегда отображает файлы в память при создании анонимных общих файлов, поэтому даже в этом случае не должно бытьбольшая разница.Я полагаю, вы могли бы принудительно запустить телеметрические тесты с включенным флагом и посмотреть, как он работает.

Что касается того, почему не использовать по умолчанию, команда общей памяти отодвинула его назад, я думаю, что это имеет смыслпо умолчанию используется / dev / shm для разделяемой памяти.

В конечном итоге все это должно быть перенесено на использование memfd_create, но я не думаю, что это произойдет в ближайшее время, так как это потребует значительного рефакторинга управления памятью Chrome,


Outro

Вот ссылка на историю Песочница .

...