對網頁彈出窗口,如WIKI所述,若要保持腳本運行穩(wěn)定,必須在waitForPopUp這個彈出窗口之后緊跟運行selectWindow命令選中這個彈出窗口(示例),如果仍不穩(wěn)定請參考這個示例。這里介紹了chooseCancelOnNextConfirmation、chooseOkOnNextConfirmation等JavaScript腳本實現的彈出窗口處理函數,selenium會彈出網頁窗口,因為它重寫了window.open在文件selenium-browserbot.js函數BrowserBot.prototype.modifyWindowToRecordPopUpDialogs中的newOpen,但這必須在window.onload之后創(chuàng)建才有效。對于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的實現。