В каких случаях может возникнуть ошибка 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 в течение всего сеанса.