Selenium & Firefox: Как я могу отключить предупреждения «Unresponsive script»? - PullRequest
12 голосов
/ 29 августа 2011

Я использую Selenium Client 2.4.0 на Mac 10.6.6 с Firefox 5. Используя WebBackedSeleniumDriver, я запускаю команду «selenium.getEval», которая вызывает предупреждение Firefox,

"Warning: Unresponsive script.

A script on this page may be busy, or it may have stopped responding. You can stop the script now, or you can continue to see if the script will complete.

Script: resource://fxdriver/modules/utils.js:9161"

Значение "dom.max_script_run_time" about: config было "0", что должно полностью отключить приведенный выше диалог. Тем не менее, я все еще получаю диалог. Есть ли способ предотвратить появление диалогового окна с предупреждением?

Ответы [ 7 ]

6 голосов
/ 30 августа 2011

dom.max_script_run_time - правильное предпочтение, но оно относится только к веб-страницам. Пользовательский интерфейс браузера (и такие расширения, как fxdriver являются его частью) ограничен предпочтением dom.max_chrome_script_run_time (значение по умолчанию - 20 секунд) Вам также следует установить его на 0.

Документация: https://developer.mozilla.org/en/Preferences/Mozilla_preferences_for_uber-geeks#DOM_preferences

5 голосов
/ 07 августа 2012

Независимо от того, что вы настроили в своем профиле, при запуске Selenium устанавливает оба значения 2417483647, чтобы попытаться обойти предупреждение браузера.Однако, поскольку значение очень велико, FF игнорирует его и использует вместо него значение по умолчанию 10/20.Это верно даже в том случае, если вы указываете Selenium использовать свой профиль в качестве шаблона.

Лучший способ обойти это - указать -timeout nnnn

для Selenium.Аргументы запуска сервера.Это устанавливает значения времени ожидания для сервера и клиента (браузера).

3 голосов
/ 21 октября 2013

Хотя этот поток довольно старый, проблема все еще существует с текущими сборками selenium и firefox.Я получил эти действительно раздражающие сообщения довольно долго, без хорошего исправления.В ответ на запрос devolopers / списка рассылки / google обычно получается следующий ответ:

Используемый в вашем приложении javascript слишком толстый или содержит ошибки, поможет улучшение ваших скриптов.

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

Суть проблемы заключается в том, чтоСелен переопределяет настройки профиля, если вы укажете параметр -timeout nnnn.Поэтому создание пользовательского шаблона профиля Firefox и установка dom.max_script_run_time и dom.max_chrome_script_run_time не будут работать здесь.

Как только вы укажете параметр -timeout, эти две настройки будут переопределены значением, которое вы указали дляпараметр.После нескольких часов отладки и тестирования я заметил несколько фактов:

  • Если вы не укажете -timeout, Firefox будет работать ровно 30 минут без тайм-аута сценария.После этого firefox будет убит селеном с SeleniumCommandTimedOutException
  • . Как только вы укажете -timeout (независимо от того, какое значение), время ожидания скрипта появится через несколько секунд или минут.Эти сообщения не зависят от значения времени ожидания.
  • Параметр -browserTimeout не используется, так как я не нашел, где этот параметр используется в источнике.

Каку нас есть несколько тестовых наборов, которые работают дольше 30 минут, у нас есть 2 варианта, чтобы исправить это поведение:

  • Переписать наши тестовые наборы и разбить их для запуска в течение 30 минут
  • Patching selenium toдольше 30 минут

Не используйте параметр -timeout.

Поэтому выберите для себя, какой вариант лучше.Я создал небольшой и простой патч для HTMLLauncher.java, чтобы позволить 90 минут вместо 30 по умолчанию.

diff --git a/java/server/src/org/openqa/selenium/server/htmlrunner/HTMLLauncher.java b/java/server/src/org/openqa/selenium/server/htmlrunner/HTMLLauncher.java
index c2296a5..310b39f 100644
--- a/java/server/src/org/openqa/selenium/server/htmlrunner/HTMLLauncher.java
+++ b/java/server/src/org/openqa/selenium/server/htmlrunner/HTMLLauncher.java
@@ -146,6 +146,16 @@
     launcher.launchHTMLSuite(suiteURL, browserURL);

     sleepTight(timeoutInMs);
+    // SFR, Patch 2013-10-17: To get rid of the damn SeleniumCommandTimedOutException
+    // we allow the Suite to run 3 times as long as per default (30 min -> 90 min).
+    if(results == null) {
+      log.warning("SFR, Patch 2013-10-17");
+      sleepTight(timeoutInMs);
+    }
+    if(results == null) {
+      log.warning("SFR, Patch 2013-10-17");
+      sleepTight(timeoutInMs);
+    }

     launcher.close();

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

2 голосов
/ 29 апреля 2016

Откройте скрытую страницу конфигурации в Firefox, набрав about: config в адресной строке. (убедитесь, что вы делаете это для профиля, который вы используете для селена). В поле «Фильтр» введите script_run_time. Это сузит параметры до dom.max_script_run_time и dom.max_chrome_script_run_time . Щелкните правой кнопкой мыши и выберите «Изменить». Коробка выскакивает. Измените число на что-то большее, например, 40. Это максимальное время, в течение которого скрипт может запускаться, прежде чем Firefox сочтет его «не отвечающим». Если вы не можете найти строку на странице about: config, создайте ее, щелкнув правой кнопкой мыши в любом месте, а затем выберите New—> Integer и введите там имя и значения (при запросе)

0 голосов
/ 02 марта 2016

Эта проблема возникает для меня, когда я делаю звонки Selenium, когда в веб-приложении работает какой-то дерьмовый медленный JS.Даже если я ловлю всплывающее окно и повторяю попытки через несколько секунд, FF больше не реагирует на Selenium.Решение состоит в том, чтобы просто поставить sleep 10 перед тем, как в противном случае любой вызов Selenium приведет к появлению всплывающего окна.

0 голосов
/ 29 августа 2011

Параметр dom.max_script_run_time указывается в секундах. Изменение его с 10 на 20 просто удваивает время ожидания. Значение 0 отключит его, но это может привести к тому, что запущенный скрипт заблокирует ваш браузер. Вы можете просто использовать действительно большое значение.

Подробнее здесь:

http://kb.mozillazine.org/Dom.max_script_run_time

0 голосов
/ 29 августа 2011

Установить очень большое число вместо "20"?

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