Selenium Webdriver зависает при попытке обработать предупреждение

Я использую Selenium webdriver java 2.45 и firefox 38, и при попытке обработать предупреждение оно зависает навсегда. Я искал любой предыдущий ответ на этот вопрос, и все, что я мог найти, это это. Он не получил никакого ответа, и я не мог прокомментировать, чтобы повторить вопрос, поэтому, пожалуйста, если кто-то столкнулся с этой проблемой, ваша помощь будет очень признательна.

К сожалению, я не могу прикрепить пример кода или что-то подобное, поскольку это конфиденциально, но сценарий выглядит следующим образом: я заполняю форму, которая генерирует предупреждение при отправке, и я использую следующий код, чтобы попытаться принять предупреждение:

try {
    (new WebDriverWait(driver_, timeout)).until(ExpectedConditions.alertIsPresent());
} catch (TimeoutException e) {
    throw new NoAlertPresentException();
} catch (Exception e1) {
    throw e1;
}

Alert alert = driver_.switchTo().alert();
String alertText = alert.getText();
if (dismiss)
    alert.dismiss();
else
    alert.accept();

Как и в случае с упомянутым вопросом, это зависло навсегда, поэтому я использовал класс Java Robot, чтобы отклонить предупреждение следующим образом:

try {
    Robot rb;
    rb = new Robot();
    rb.keyPress(KeyEvent.VK_ENTER);
    Thread.sleep(2000);
    rb.keyRelease(KeyEvent.VK_ENTER);
} catch (AWTException | InterruptedException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}

К сожалению, сразу после этого я получаю исключение UnhandledAlertException, поэтому я не знаю, что делать. Попытка принять предупреждение с помощью «driver_.switchTo().alert().accept» сразу после того, как код робота только задерживает генерацию исключения.

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

Дополнительная информация. Управление оповещениями по умолчанию работало день назад, как раз перед тем, как команда пользовательского интерфейса в компании решила перейти на асинхронность для своих вызовов Ajax. Я не знаю, актуальна ли вообще эта информация, но я решил, что больше информации лучше, чем ее недостаточно.


person Karl Fokum    schedule 02.06.2015    source источник
comment
Можете воспроизвести проблему на хроме?   -  person Saifur    schedule 02.06.2015
comment
Я не реализовал свои тесты Selenium для Chrome. Я попытаюсь переключиться на chromedriver, и если это не займет слишком много времени, у меня будет ответ для вас достаточно скоро.   -  person Karl Fokum    schedule 02.06.2015
comment
Что за предупреждение там выскакивает? Это предупреждение на основе браузера или ОС?   -  person Priyanshu Shekhar    schedule 02.06.2015
comment
@KarlFokum Тогда понизьте версию Firefox. FF 38 пока официально не поддерживается Selenium. Есть много открытых проблем с последним ff и selenium 2.45.   -  person Saifur    schedule 02.06.2015
comment
@Saifur У меня была такая же проблема с FF 34 перед обновлением. Я действительно обновился сегодня, пытаясь найти причину проблемы.   -  person Karl Fokum    schedule 02.06.2015
comment
@PriyanshuShekhar Это оповещение на основе браузера. Он генерируется функцией оповещения Javascript.   -  person Karl Fokum    schedule 02.06.2015
comment
@Saifur Переход на Chrome оказывается сложным, так как я продолжаю получать ошибки libGL среди прочего, когда пытаюсь запустить с Chromedriver. Поиск в Интернете показывает, что это может быть связано с тем, что я запускаю в VirtualBox. К сожалению, я не могу изменить это, так как это среда разработки для всей команды разработчиков здесь: Разработка на Ubuntu 14.04 в VirtualBox, установленном на машине с Windows 7.   -  person Karl Fokum    schedule 02.06.2015
comment
@Saifur Я только что понял, что переключился на Chrome, и проблема не возникает с Chrome, то есть она специфична для Firefox. По крайней мере, так кажется.   -  person Karl Fokum    schedule 02.06.2015
comment
Да. В последнее время я вижу, что у многих людей возникают проблемы с Firefox и Selenium.   -  person Saifur    schedule 02.06.2015


Ответы (1)


Версия Firefox 30 — лучшая версия для selenium webdriver. Понизьте Firefox до версии 30, и проблема решится.

person Ravi    schedule 03.06.2015
comment
Я пробовал, но это тоже не работает. То же поведение, что и в Firefox 34 и 38, он зависает навсегда, когда появляется всплывающее предупреждение. - person Karl Fokum; 10.06.2015
comment
@KarlFokum убедитесь, что вы внесли изменения в настройки Firefox, чтобы он не обновлялся. Перейдите в дополнительные настройки в firefox и установите флажок Никогда не проверять наличие обновлений. - person Ravi; 11.06.2015
comment
У меня есть. Я обновляюсь только тогда, когда меняю свою версию Selenium (или в этом случае, когда возникает новая проблема, и мне нужно проверить, связана ли она с текущей версией браузера и была ли она исправлена ​​в более поздней версии) - person Karl Fokum; 15.06.2015