如何解决Alert closing和document.readyState

时间:2017-05-09 20:20:47

标签: selenium

我有以下一般的VB代码:
*测试代码:调用Selenium SetKeys并在Web表单上填充多个字段。


*测试代码:然后在带有OnChange事件的Html输入元素上调用SetKeys。


* Selenium将值插入文本框。


* OnChange事件触发调用Javascript函数。


* JS功能显示警告或确认对话框。


*测试代码:从对话框中获取文字:


DialogText = DriverObj.SwitchTo()。警报()。文字


*测试代码:关闭对话框
DriverObj.SwitchTo()。警报()。接受()

()
*最后我用Executescript调用:" return document.readyState"


我得到:OpenQA.Selenium.UnhandledAlertException:'模态对话框出现'


我在调试模式下运行VB。所以我看到这种情况发生了:



1)测试代码启动IE。

IE显示为顶窗。

2)测试代码填写网络表格。

3)测试代码用OnChange事件填充文本框。

4)代码在断点处停止。

Visual Studio现在显示为顶部窗口。

IE在后台显示。

)5)DriverObj.SwitchTo()。Alert()。文本成功获取对话框文本。

)6)DriverObj.SwitchTo()。Alert()。Accept()成功运行。

7)代码获取ExecuteScript" return document.readyState"。

8)IE窗口显示在VS窗口前面。

9)对话框显示在IE中。

10)代码执行ExecuteScript" return document.readyState"。

11)代码显示异常:OpenQA.Selenium.UnhandledAlertException:'模态对话框出现'。
我试过调用DriverObj.SwitchTo()。在用Accept()解除它之后调用Alert()以确保对话框已经消失,但我仍然会出现'模态对话框'例外。
在调用' return document.readyState'?

之前,我该怎样做才能确保IE完全显示并关闭对话框

1 个答案:

答案 0 :(得分:0)

在这种情况下,您可以尝试:

WebDriverWait wait = new WebDriverWait(driver, 30);
// Wait until alert is NOT present
wait.until(ExpectedConditions.not(ExpectedConditions.alertIsPresent()));
// OR Wait until number of windows is 1 i.e. main content
wait.until(ExpectedConditions.numberOfWindowsToBe(1));