Ошибка драйвера Chrome при использовании Selenium: не удается обнаружить открытые страницы
Я получаю ошибку, связанную с драйвером Chrome, при запуске моих тестов Selenium. Сообщение об ошибке " не удается обнаружить открытые страницы.- До вчерашнего вечера все тесты на селен шли нормально. Проблема, казалось, началась после перезагрузки сервера накануне. Я не могу воспроизвести эту ошибку на своем локальном ящике. Запуск тестов Selenium из командной строки на сервере открывает браузер Chrome, но приводит к той же ошибке. Есть идеи?
Линия то есть неудача:
chromeDriver = new OpenQA.Selenium.Chrome.ChromeDriver(externalDriverPath);
Сообщение об ошибке и stacktrace:
Не удается обнаружить открытые страницы (информация о драйвере: chromedriver=2.1, platform=Windows NT 6.1 SP1 x86_64) на Опенка.Селен.Дистанционный.RemoteWebDriver.UnpackAndThrowOnError (Ответ errorResponse) на Опенка.Селен.Дистанционный.RemoteWebDriver.Execute (Строка driverCommandToExecute, параметры словаря`2) на Опенка.Селен.Дистанционный.RemoteWebDriver.StartSession (ICapabilities desiredCapabilities) около Опенка.Селен.Дистанционный.RemoteWebDriver..чтор(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities) на Опенка.Селен.Хром.ChromeDriver..ctor (строка chromeDriverDirectory, chromeoptions options) на Опенка.Селен.Хром.ChromeDriver..ctor (строка chromeDriverDirectory) в SeleniumTests.BaseTest.SetupBrowsers ()
При создании экземпляра ChromeDriver появляется окно консоли. Сервер с ошибкой, кажется, ссылается на вещи НЕ РЕАЛИЗОВАТЬ.
Вывод ChomeDriver с сервера с ошибкой:
Запустил ChromeDriver (v2. 1) на порту 2984 [4700:4292: 0108/111503: ошибка: gpu_info_collector_win. cc (102)] не могу получить оценку va lid WinSAT. [4700:4292: 0108/111503: ошибка: chrome_views_delegate. cc (176)] нет ВЫПОЛНЕННЫЙ [4700:4292: 0108/111503: ошибка: desktop_root_window_host_win. cc (746)] нет Реализовать ED [0108/111504: ERROR: gl_surface_egl. cc(132)] eglInitialize не удалось с ошибка UNKNO WN [0108/111504: ошибка: gl_surface_win. cc (97)] GLSurfaceEGL:: InitializeOneOff не удалось.
Вывод ChomeDriver с моего ПК, который отлично работает:
Запустил ChromeDriver (v2. 1) на порту 18786 [884540:883760: 0108/114010: ошибка: gpu_info_collector_win. cc(102)] не могу получить действительную оценку WinSAT. [884992:884996: 0108/114010: ошибка: base_feature_provider. cc(122)] manifestTypes: заполнение контекстов web_page требует предоставления значения для спички. [885232:885236: 0108/114011: ошибка: base_feature_provider. cc (122)] manifestTypes: заполнение контекстов web_page требует предоставления значения на матчи. [884540:883760: 0108/114011: ошибка: base_feature_provider. cc (122)] manifestTypes: заполнение контекстов web_page требует предоставления значения на матчи. [0108/114011: ошибка: gl_surface_egl. cc(131)] eglInitialize ошибка с ошибкой UNKNO WN [0108/114011: ERROR: gl_surface_win. cc (54)] GLSurfaceEGL:: InitializeOneOff не удалось.
6 ответов:
Вы используете сильно устаревшую версию ChromeDriver. Ваш первый порт вызова должен быть обновить его здесь.
Я сильно подозреваю, что проблема в том, что ваш Chrome на вашем сервере обновился, и ChromeDriver v2.1 не поддерживает любые последние версии Chrome.
Ищите здесь другие возможные решения: https://groups.google.com/forum/?hl=en#! тема/selenium-users/gfvfH-YEC48
В моем случае добавление аргумента --no-sandbox к ChromeOptions решило проблему.
Вот быстрый обходной путь, который я нашел, копаясь вокруг, чтобы избавиться от этой ошибки:
unknown error: unable to discover open pages
В конфигурационный файл транспортира добавьте следующее:
capabilities: { browserName: 'chrome', chromeOptions: { args: ['--no-sandbox'] } },
Самая важная линия там-это --нет-песочница; добавление этой строки каким-то образом избавляет от этой ошибки.
Я не совсем уверен, почему это работает, но это обходной путь, который я нашел, копаясь в интернете.***********************************обновления по состоянию на 10/04/2016***********************************
Пожалуйста, игнорируйте эту часть прямо выше, поскольку этот обходной путь не является правильным решением; ниже я покажу вам фактическое решение вашей проблемы; у вас просто есть устаревший драйвер chrome и запуск "WebDriver-manager update" обновит только до версии v2.22, поэтому я покажу вам, как захватить версию v2.24 прямо ниже.
Я потерял несколько недель, дергая себя за волосы из-за проблемы сЧитайте дальше, если ваш WebDriver-manager update не обновляет chromedriver до последнего т. е. прошедшего v2. 22 или до v2. 24 по состоянию на 10/04/2016.
"Unable to discover open pages"
, и каждый раз, когда я обновлял chromedriver, он обновлялся доversion 2.22
для chromedriver, и я считаю, что сервер selenium доv2.53
. Моя проблема была не совсем с сервером selenium, так что v2. 53 был в порядке.Issue was with chromedriver v2.22.
Несмотря на то, что эта ссылка chromdriver показала, что существует последняя версия 2.24,
'webdriver-manager update'
не будет собирать эту последнюю версию, она будет только захватывать версию 2.22 из водитель хрома.Как я обошел это?
Просто выполните команду ниже после того, как вы проверите эту ссылку для какой версии chromedriver вы хотите обновить; например, я хотел v2. 24, поэтому я выполнил команду ниже:
Обновление Webdriver-manager -- versions.chrome 2.24
Если вы проверяете свое местоположение:
C:\Users\<USER>\AppData\Roaming\npm\node_modules\webdriver-manager\selenium\
Вы должны увидеть, что нужный chromedriver был загружен туда; если его там нет, прочитайте командную строку войдите в систему, и он сообщит вам, где он загрузил ваши файлы chromdriver.
Надеюсь, что это кому-то поможет!
У меня была та же проблема, но обновление до последней версии ChromeDriver (v2.8) не решило ее для меня. Я запускал Selenium на сервере CI (машина Dell под управлением 64-битной Win 7). Я получал исключение каждый раз, когда сервер был "простаивающим" в течение некоторого времени.
Что исправило проблему для меня, так это установить "выключить дисплей после" в настройках питания Windows На "никогда".
Сначала убедитесь, что вы обновили браузер chrome, через меню UI.
Затем обновите ChromeDriver, здесь.