對網(wǎng)頁彈出窗口,如WIKI所述,若要保持腳本運(yùn)行穩(wěn)定,必須在waitForPopUp這個彈出窗口之后緊跟運(yùn)行selectWindow命令選中這個彈出窗口(示例),如果仍不穩(wěn)定請參考這個示例。這里介紹了chooseCancelOnNextConfirmation、chooseOkOnNextConfirmation等JavaScript腳本實現(xiàn)的彈出窗口處理函數(shù),selenium會彈出網(wǎng)頁窗口,因為它重寫了window.open在文件selenium-browserbot.js函數(shù)BrowserBot.prototype.modifyWindowToRecordPopUpDialogs中的newOpen,但這必須在window.onload之后創(chuàng)建才有效。對于HTTPS安全性彈出窗口證書的處理,見Selenium RC。
對非網(wǎng)頁彈出窗口,如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函數(shù)BrowserBot.prototype.modifyWindowToRecordPopUpDialogs中被覆寫。
3.這里用window.open覆寫了window. showModalDialog,同樣實現(xiàn)的還有在文件selenium-browserbot.js函數(shù)BrowserBot.prototype._modifyWindow實現(xiàn)開始部分添加對ModalDialog的實現(xiàn)。