用户必须响应警告/确认弹窗,并且将焦点移到新开的弹窗上。幸运的是,Selenium 可以处理 JavaScript 弹窗。

    在我们开始介绍警告/确认/提示的细节之前,有必要先了解一些共性的基础知识。警告、确认和提示都有下面的一些命令模式:

    当 Selenium 运行时,JavaScript 弹窗将不会出现。这是因为 JavaScript 的函数调用,在运行时被 Selenium 自己的 JavaScript 代码覆盖。然而,没看到弹窗,并不意味着不用处理它。通过调用 AssertFoo(pattern) 来处理弹窗。如果弹窗显示的断言失败了,测试会暂停并提示类似下面的错误信息:
    [error] Error: There was an unexpected Confirmation! [Chose an option.]

    Alerts 警告弹窗

    你可能会奇怪,自己并没有添加警告弹窗的断言,这些都是 Selenium IDE 为我们做的处理,Selenium IDE 同时也为我们关闭了警告弹窗。如果你去掉断言命令,然后回放脚本,你会收到以下错误:
    [error] Error: There was an unexpected Alert! [I’m blocking!]

    你必须在脚本中包含一个断言命令来承认弹窗的存在。

    如果你只是想断言警告弹窗出现了,并不关心它包含的文本是什么,这时可以使用 assertAlertPresent。他将返回真或假,当返回假时,停止测试。

    Confirmations 确认弹窗

    chooseCancelOnNextConfirmation 函数告诉 Selenium 所有后续的确认应返回 false。它可以通过调用 chooseOkOnNextConfirmation 来重置。

    请注意,此测试案例不能正常回放,届时 Selenium 会提示有一个未处理的确认。这是因为 Selenium IDE 录制事件的顺序错误导致的 Click 和 chooseCancelOnNextConfirmation 两个命令的顺序错误。(仔细想想,Selenium 并不知道在你打开一个确认弹窗之前会取消操作)只要交换前后这两个命令的位置,测试案例就会正常工作。

    Prompts 提示弹窗

    提示弹窗的行为跟警告弹窗类似,assertPrompt 和 assertPromptPresent 提供与警告弹窗命令类似的功能。默认情况下,弹出的提示信息后,Selenium 将等待你输入数据。试着录制下列操作,在示例页面上点击“显示提示弹窗”的按钮,然后在提示框中输入 Selenium 。录制好的测试案例看上去可能像下面这样: