Как бороться с оверлеем Приостановлено в отладчике при автоматическом выполнении теста с использованием Selenium - PullRequest
17 голосов
/ 11 июня 2019

Каждый раз, когда я пытаюсь получить доступ к этому веб-сайту и открываю Я не могу проверить ни один из элементов через Инспектор, поскольку пользовательский интерфейс имеетналожение вместе с сообщением Paused in debugger.

В ответе на голосование и принятие этого обсуждения сказано, чтобы проверить вкладку «Источник», проверьте на панели «Точки останова приемника событий», еслиВы установили любые точки останова в разделе «Мышь».Я перекрестно проверил, что ни один из Sources -> EventListenerBreakpoint не установлен.

проголосовал и принял ответ этого обсуждения говорит, чтобы проверить, если маленький знак восьмиугольной остановки / паузы(в левом нижнем углу Chrome «Источники») окрашен (синий или фиолетовый).Я не уверен, почему мне нужно сделать это дополнительно для отдельных веб-сайтов.

Снимок:

DebuggerPaused

Голосование подтвержденои принятый ответ на это обсуждение говорит о ручных шагах .

Все решения, похоже, указывают на ручной процесс.Но эта проблема мне кажется основной причиной того, что Selenium не может getPageSource().

Испытания кода:

System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");
options.addArguments("disable-infobars");
options.addArguments("--disable-extensions");
WebDriver driver = new ChromeDriver(options);
driver.get("http://rd.huangpuqu.sh.cn/website/html/shprd/shprd_tpxw/List/list_0.htm");

Вывод: Chrome открывается, но непереходит на URL.

Итак, мои вопросы:

  • В таком случае может Paused in debugger произойти ошибка?
  • Это ошибка разработки веб-интерфейса?
  • Как я могу обойти эту ошибку во время Автоматических тестов - Селен ?

1 Ответ

7 голосов
/ 21 июня 2019
  • В каких случаях может возникнуть ошибка Paused in debugger?

    Каждый раз, когда вы открываете эту страницу с открытыми инструментами разработчика.Строка debugger; приостановит выполнение javascript, но браузеры проигнорируют ее, если инструменты разработчика будут закрыты.

  • Это ошибка разработки веб-интерфейса?

    В этом случае нет - они намеренно пытаются вас не пускать.Цель этой функции - приостановить выполнение, а затем перенаправить браузер на другую страницу, если возобновление занимает более 100 мс.Я предположил бы, что это разработано, чтобы вмешаться в автоматизированные сканеры, такие как селен, потому что обычный пользователь не будет затронут, и человеческий разработчик может просто взломать это.

  • Какя могу обойти эту ошибку во время автоматических тестов с помощью Selenium?

Моя первая рекомендация - попытаться запустить Selenium без головы, если это возможно.Если нет, используйте горячую клавишу для возобновления выполнения (F8). Вы можете использовать любой метод, который вам нравится, для генерации нажатия клавиши;с пакетом java.awt это будет выглядеть примерно так:

Robot robot = null;
try
{
   robot = new Robot();
}
catch(Exception e)
{
   //handle failure
}
robot.keyPress(KeyEvent.VK_F8);

Помните, что вы должны активировать его в течение 100 мс, поэтому используйте любую логику, которая вам нравится, чтобы обнаружить блок и быстро отреагировать.Если вы просто хотите что-то быстрое и грязное, я бы просто сделал это спамом F8 нажимать каждые 50 мс в течение некоторого периода времени, пока вы не убедитесь, что страница загружена.

РЕДАКТИРОВАТЬ: В дальнейшемрасследование, эта страница очень грязная и враждебная для всех, у кого открыты инструменты разработки.Существует не одна, а несколько функций, которые запускают debugger;, и они вызываются повторно по таймеру, пока вы находитесь на странице.Запуск без головы кажется лучшим выбором, если только вы не хотите продолжать спамить F8 в течение всего сеанса.

...