Selenium не запускается браузер

Обновлено: 05.07.2024

Я испытываю сценарий исключения, использующий chromedriver.exe с некоторыми модульными тестами, которые я пишу с помощью Selenium. Когда выполняется первый тест, использующий хроматический драйвер, браузер запускается и тест проходит.

Однако для всех следующих тестов, в которых используется хроматический драйвер, браузер не может успешно перейти к URL-адресу.

Это известная проблема?

Я использую следующие версии:

Селен: 2.41.0.0
Chromedriver.exe: 2.9.0.0
Visual Studio 2013: 12.0.30110.00 Обновление 1

У меня есть следующий Initialize метод в моем ChromeTestDriver class, который вызывается в методе Setup (или TestInitialize) для всех тестов:

У меня есть следующий код в методе очистки (aka Teardown) для всех тестов:

Следующее исключение получает:

OpenQA.Selenium.NoSuchWindowException: нет такого окна: целевое окно уже закрыто

Дайте мне знать, если я могу предоставить больше информации.

Правка Я заметил, что тест IE должен быть запущен в первую очередь, прежде чем Chrome завершится неудачей. Как правило, происходит следующее. Тест Chrome работает нормально. Затем выполняется тест IE. После этого все тесты Chrome не пройдены.

Дальнейшее редактирование Еще одним необычным аспектом является то, что после того, как Chrome был продан Selenium для сайта, я больше не могу загружать сайт в Chrome вообще. То есть, если я вручную введу URL-адрес в адресной строке Chrome, отобразится та же пустая страница.

Еще более странно, что если я запустил Fiddler2 (который по сути является прокси-сервером), Chrome станет незапятнанным. Это работает снова.

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

Симптомы также воспроизводятся моим клиентом, который находится на другом континенте. Мы сотрудничаем с помощью GIT. Так что это не ограничивается моей системой.

Пользователь из группы пользователей Selenium Google предложил воспроизвести ошибку с помощью веб-драйвера в очень простом сценарии (т. Е. Не в рамках инфраструктуры тестирования). Вот код для консольного приложения, которое я создал для этого:

на сервере Linux висит исполняемый файл jar, а именно Телеграм бот. Программа работает круглосуточно без остановок, парсит ссылки в интернете. Все работает несколько дней (2-3 дня) потом вылетает ошибка

После чего идет перезагрузка браузера в моем случае Firefox на geckodriver. И после перезагрузки вылетает новая ошибка

Но вместо того что-бы работать оно запускает браузер много раз под ряд после чего происходит конфликт. Новые открытые браузеры выдают ошибку и не закрываются а висят рабочими перенагружая сервер

Сам класс где исполняется парсинг и запуск браузера

Может я что-то делаю не так, в чем дело?


Необходимо полное описание проблемы, включая в чем дело. @RomanC, не понятно в чем проблема. Оно работает несколько дней нормально. Потом в какой-то момент geckodriver выдает ошибку что в первом коде я прикрепил. После этого этот же geckodriver начинает запускать себя много раз не закрывая прошлые сессии, происходит конфликт по типу NativeConstructorAccessorImpl.newInstance0(Native Method), такая ошибка у меня вылетала когда я запускал geckodriver не в свернутом режиме. В чем дело я пытаюсь понять уже вторую неделю, не понятно. Думал памяти на сервере не хватает, но про утечек памяти или недостатка предупреждений не было.

Я сменил браузер на GoogleDriver, уже 4 день все работает как надо. Включаю браузер с параметрами

Бот летает. БД работает. Никаких ошибок нет. Правда скорость проверки ссылок ограничилась, думаю это из-за того что я перед каждым запросом открываю-закрываю браузер, если просто закрыть вкладку и открыть новую скорее всего будет работать быстрее. Так что проблема наверное была именно в браузере, или в стоке памяти, может FirefoxDriver сильно нагружал сервер в какой-то момент и все падало. Но в то же время FirefoxDriver проверял 3-4 ссылки с перезагрузкой самого себя, GoogleDriver в этом плане отстает, наверное из-за заданных параметров.


Я не могу запустить браузер IE для запуска автоматических тестов selenium, написанных на Java. Я использую Windows 7 и IE 9. Ниже приведен мой код:

enter image description here

пожалуйста, найдите вложение.

Он должен установить одинаковый уровень безопасности во всех зонах. Для этого выполните следующие действия:

  1. открыть IE
  2. перейдите в меню Сервис -> Свойства обозревателя -> безопасность
  3. установите все зоны (интернет, локальная интрасеть, доверенные сайты, сайты с ограниченным доступом) в один и тот же защищенный режим, включен или отключен не имеет значения.

наконец, установите уровень масштабирования на 100%, щелкнув правой кнопкой мыши на шестеренке, расположенной в правом верхнем углу и включив строка состояния. Уровень масштабирования по умолчанию теперь отображается в правом нижнем углу.

и быстрый способ из той же ссылки : "в IE, из меню "Сервис" (или значок шестеренки на панели инструментов в более поздних версиях), выберите " Свойства обозревателя."Перейти на вкладку "Безопасность". В нижней части окна для каждой зоны, вы должны увидеть чек флажок "Включить защищенный режим."Установите значение флажка равным тому же значению, установленному или не установленному, для каждой зоны"

следующий фрагмент кода WebDriver Java должен работать для запуска IE. Код будет игнорировать настройку параметров защищенного режима для всей зоны в браузере IE.

загрузите IEDriverServer и извлеките его в нужное место и установите абсолютный путь (в моем примере выше это было "D:\Ripon Al Wasim\IEDriverServer.exe")

  1. на IE->Tools->Internet Options .
  2. перейдите на вкладку Безопасность.
  3. включить/отключить защищенный режим для всех(интернет, местная интрасеть, надежные сайты и опасные сайты.)

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

вам нужно будет установить запись реестра на целевом компьютере, чтобы драйвер может поддерживать подключение к экземпляру Internet Исследователь он создает.

измените несколько настроек браузера Internet Explorer на этой машине (где вы хотите запустить автоматизацию).

1 . Настройка Раздела Реестра / Запись :

чтобы установить раздел реестра или запись, вам нужно открыть "редактор реестра".

чтобы открыть "редактор реестра" нажмите кнопку windows + R алфавитный ключ который откроет "окно запуска", а затем введите" regedit " и нажмите enter.

или нажмите кнопку Windows и введите "regedit" в меню "Пуск" и нажать кнопку ввод. Теперь в зависимости от типа вашей ОС, следует ли 32/64 бит соответствие лестница.

Windows 32 бит: перейдите в это расположение - " HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl "и проверьте ключ" FEATURE_BFCACHE".

бит Windows 64: перейдите в это расположение-HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl и проверьте наличие ключа "FEATURE_BFCACHE". обратите внимание: the FEATURE_BFCACHE подраздел может или может не присутствовать, и должен быть создан если его нет.

важно: внутри этого ключа создайте значение DWORD с именем iexplore.exe со значением 0.

Registry Setting

2 . Изменение настроек браузера Internet Explorer:

нажмите на кнопку Настройки и выберите "Свойства обозревателя".

On " Интернет параметры " окно перейти к "безопасность" tab

Теперь выберите "сети" опция и снимите флажок" Включить защищенный режим "и измените" уровень безопасности " на низкий.

Теперь выберите "Местная Интрасеть" опция и изменить "уровень безопасности" на низкий.

Теперь выберите "Надежные Узлы" опция и изменить "уровень безопасности" на низкий.

Internet Options

  • Теперь нажмите на кнопку "применить" кнопка, всплывающее предупреждение может появиться нажмите на кнопку" OK "для предупреждения, а затем на кнопку" OK " в окне параметров Интернета.

Save Settings

вместо использования абсолютного пути для IEDriverServer.exe, лучше использовать относительный путь в соответствии с проектом.

для использования NighwatchJS:

перед началом работы с Internet Explorer и Selenium Webdriver рассмотрим эти два важных правила.

  • уровень масштабирования: должен быть установлен по умолчанию (100%) и
  • настройки зоны безопасности: должны быть одинаковыми для всех. Параметры безопасности должны быть установлены в соответствии с разрешениями организации.

Как установить?

  • просто перейдите в Internet explorer, сделайте оба материала вручную. Вот и все. Нет секрет.
  • сделайте это через свой код.

Способ 1:

возможности DesiredCapabilities = возможности DesiredCapabilities.Internet обозреватель();

это точно не показывать никаких ошибок, и браузер откроется а также будет перемещаться по URL.

эта не будет идентифицировать какой-либо элемент и, следовательно, вы не можете продолжить.

почему? Потому что у нас просто подавил ошибку и попросил IE открыть и получить этот URL-адрес. Однако Selenium будет идентифицировать элементы только в том случае, если масштаб браузера равен 100% ie. по умолчанию. Таким образом, окончательный код будет

Метод 2 надежный и полный способ доказательства:

надеюсь, что это помогает. Дайте мне знать, если потребуется дополнительная информация.

Я пытаюсь запустить сервер selenium, передав пользовательский профиль firefox конструктору DefaultSelenium. Он открывает браузер с указанным URL-адресом.

тогда он остается таким, и сервер не запускается.

это работает если я не использую пользовательский профиль.

Я думаю, что мой сервер не настроен для запуска пользовательского профиля. Пожалуйста, помоги мне с этим.

на старт команда на самом деле не запускает ваш сервер selenium как таковой, она подключает ваш объект selenium к уже сервер с браузер.

чтобы фактически запустить сервер selenium [Jetty Web], который отправляет / получает команды тестируемому приложению через указанный браузер, используйте пакетный файл и переключатель rs79 имеет в виду. Содержимое вашего пакетного файла должно включите его линию:

теперь у вас есть настоящий сервер selenium, работающий на вашем компьютере dev (localhost) с портом по умолчанию "4444". Это укажет, что любое тестирование браузера Firefox будет использовать этот профиль.

теперь ваш конструктор DefaultSelenium, назначение и другие вызовы могут выглядеть так:

Firefox начнет использовать пользовательский профиль, указанный в пакетном файле, который запускает сервер Selenium, с желаемым базовым URL-адресом, а затем перейдите в нужное приложение [URL]. Если вы начинаете свой тест с "http://www.server.com/ " и не "http://www.server.com/myApp", Вы можете опустить последнее открыть линии.

при вызове сервера Selenium RC укажите путь с помощью дополнительного -firefoxProfileTemplate предложения. Например -

Это позволит вам использовать все привязки были сохранены в пользовательском профиле.

d) в моем случае я использую FF 36 и selenium-server-standalone-2.45.0.jar
Запустить selenium server :

тогда обратитесь к нему в своем коде:

если вы хотите обратиться к конкретному профилю в своем коде (здесь я использую папку, созданную по умолчанию для профиля с именем "myProfile"):

вы можете добавить сертификаты в пользовательский профиль
a) запустить браузер с пользовательским профилем
b) добавить сертификат
c) не забудьте отметить опцию в настройках Firefox / Advanced / Certificates
Select one automatically
чтобы избежать запроса на принятие сертификата каждый раз при доступе к тестируемой странице
d) перезапустить браузер
e) перейти на страницу, что будет протестировано и принято User Identification Request
f) закройте Firefox и наслаждайтесь пользовательским профилем с сертификатами, доступными с selenium server:)

Читайте также: