Прием оповещений, запускаемых JavaScript

Почему это невозможно (используя InternetExplorerDriver) принимать оповещения, которые были вызваны явным выполнением JavaScript?

driver.ExecuteJavaScript("myfuncTriggeringAnAlert()");

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5));
var alert = wait.Until(ExpectedConditions.AlertIsPresent());
alert.Accept();

Код прекрасно работает, используя ChromeDriverк сожалению, однако, InternetExplorerDriver даже не возвращается из ExecuteJavaScript() вызов. Это просто истекает через 60 секунд.

Есть идеи? Это хорошо известное поведение?

IE11 + IE Driver 2.48.0

1 ответ

Я думаю, что проблема заключается в window.alert функция JavaScript. В Internet Explorer он ведет себя не так, как в других браузерах. Selenium WebDriver не может справиться с этим должным образом, насколько мне известно, единственное, что вы можете сделать, это закрыть его вручную в IE.

Итак, я бы изменил вашу функцию myfuncTriggeringAnAlert избегать использования нативных оповещений. Может быть, вы можете использовать пользовательский диалог оповещения, например, здесь.

Другие вопросы по тегам