对网页弹出窗口,如WIKI所述,若要保持脚本运行稳定,必须在waitForPopUp这个弹出窗口之后紧跟运行selectWindow命令选中这个弹出窗口(示例),如果仍不稳定请参考这个示例。这里介绍了chooseCancelOnNextConfirmation、chooseOkOnNextConfirmation等JavaScript脚本实现的弹出窗口处理函数,selenium会弹出网页窗口,因为它重写了window.open在文件selenium-browserbot.js函数BrowserBot.prototype.modifyWindowToRecordPopUpDialogs中的newOpen,但这必须在window.onload之后创建才有效。对于HTTPS安全性弹出窗口证书的处理,见Selenium RC。
对非网页弹出窗口,如window.alert,window.confirm,window.prompt,window. showModalDialog等,有如下方法:
1.封装Windows Api,对Java语言则有Java Native Interface (JNI)或者J/Invoke(示例)。
2.Selenium RC中开启proxy injection(PI)模式也可以识别,这种模式提供了一个HTTP代理在浏览器之前自动更改所有接收到的HTML。window.alert, window.confirm,window.prompt在文件selenium-browserbot.js函数BrowserBot.prototype.modifyWindowToRecordPopUpDialogs中被覆写。
3.这里用window.open覆写了window. showModalDialog,同样实现的还有在文件selenium-browserbot.js函数BrowserBot.prototype._modifyWindow实现开始部分添加对ModalDialog的实现。