2012-06-24 7 views
0

У вас возникли проблемы при попытке закрыть модальное диалоговое окно в браузере. Код аналогичен следующему:Сценарий зависает при попытке закрыть модальный диалог

   1) driver.switchTo().window(1); 
       2) driver.close(); 
       3) driver.switchTo().window(0); 

Проблема заключается в том, что выполнение кода висит на линии номер 2. Я считаю, что из-за браузера (нет сети) диалог говоря: «Веб-страница, которую вы читаете это пытаются закрыть окно ... ". Сценарий запускается после закрытия диалогового окна подтверждения вручную. Поэтому мне интересно, есть ли у кого-нибудь идеи о том, как справиться с этой проблемой. Я работаю с браузером IE8 с webdriver 2.24.1.

+0

Вы пытались поместить driver.switchTo(). Alert() после driver.close()? Я не уверен, что это сработает, но стоит попробовать. Кроме того, абсолютно необходимо закрыть браузер? Если вы переключитесь на окно (0), не закрывая окно (1) Будет ли это влиять на ваше тестирование? –

+0

Код после строки номер 2 не будет выполнен, если предупреждение обозревателя не будет закрыто вручную (оно просто зависает). Итак, нет никакой разницы, что будет там. Да, необходимо закрыть окно браузера 1. Идея состоит в том, чтобы закрыть все ненужные окна, диалоги, кроме основного, перед началом нового теста. – user1058106

ответ

0

Если решение A.J. в:

driver.close(); 
driver.switchTo().alert().accept(); 

не работает, я предлагаю filing a bug. Прежде чем это будет решено, попробуйте обходной путь:

((JavascriptExecutor)driver).executeScript("window.onbeforeunload = function(){};"); 
driver.close(); 
+0

Удалось закрыть всплывающее окно модного браузера со следующим кодом (не было найдено диалогового окна подтверждения): ((JavascriptExecutor) Session.getDriver()). ExecuteScript ("window.close();"); Но по-прежнему невозможно сделать то же самое с отдельным окном браузера. Появится диалоговое окно подтверждения ... Тот же код зависает (И нужно закрыть диалоговое окно подтверждения вручную. – user1058106

0

Спасибо за вашу помощь! Удалось устранить проблему, выполнив следующую процедуру: JS

((JavascriptExecutor)driver).executeScript("window.open(\"\", \"_self\");window.close();"); 
Смежные вопросы