對(duì)網(wǎng)頁(yè)彈出窗口,如WIKI所述,若要保持腳本運(yùn)行穩(wěn)定,必須在waitForPopUp這個(gè)彈出窗口之后緊跟運(yùn)行selectWindow命令選中這個(gè)彈出窗口(示例),如果仍不穩(wěn)定請(qǐng)參考這個(gè)示例。這里介紹了chooseCancelOnNextConfirmation、chooseOkOnNextConfirmation等JavaScript腳本實(shí)現(xiàn)的彈出窗口處理函數(shù),selenium會(huì)彈出網(wǎng)頁(yè)窗口,因?yàn)樗貙懥藈indow.open在文件selenium-browserbot.js函數(shù)BrowserBot.prototype.modifyWindowToRecordPopUpDialogs中的newOpen,但這必須在window.onload之后創(chuàng)建才有效。對(duì)于HTTPS安全性彈出窗口證書(shū)的處理,見(jiàn)Selenium RC。
對(duì)非網(wǎng)頁(yè)彈出窗口,如window.alert,window.confirm,window.prompt,window. showModalDialog等,有如下方法:
1.封裝Windows Api,對(duì)Java語(yǔ)言則有Java Native Interface (JNI)或者J/Invoke(示例)。
2.Selenium RC中開(kāi)啟proxy injection(PI)模式也可以識(shí)別,這種模式提供了一個(gè)HTTP代理在瀏覽器之前自動(dòng)更改所有接收到的HTML。window.alert, window.confirm,window.prompt在文件selenium-browserbot.js函數(shù)BrowserBot.prototype.modifyWindowToRecordPopUpDialogs中被覆寫。
3.這里用window.open覆寫了window. showModalDialog,同樣實(shí)現(xiàn)的還有在文件selenium-browserbot.js函數(shù)BrowserBot.prototype._modifyWindow實(shí)現(xiàn)開(kāi)始部分添加對(duì)ModalDialog的實(shí)現(xiàn)。