您的位置:軟件測試 > 開源軟件測試 > 開源功能測試工具 >
Web 測試實踐 for .Net ?WatiN
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2013/12/5 13:51:43 ] 推薦標簽:

2、對于alert 、confirm 等javascript彈出的窗口的捕獲。

背景:一個系統(tǒng)經(jīng)常會使用以上這些javascript來彈出一些提示信息,如果捕獲這些窗口,并模擬用戶點擊這些窗口上的OK或Cancel按鈕?

方案:其實WatiN在默認情況下,都會自動地去點擊這些彈出式窗口上的Cancel按鈕的,但如果用戶要明確點擊哪些事件的話可以對IE對象增加一個“查看器”()

//錯誤事例
        protected void f()
        {
            WatiN.Core.DialogHandlers.ConfirmDialogHandler dh = new WatiN.Core.DialogHandlers.ConfirmDialogHandler();

            ie.AddDialogHandler(dh);//這句增加了一個控制器
            /**/
            /*
                 假設(shè)yzp_dic_btn_cls這個按鈕的onclick事件會用JS彈出一個Confirm窗口。
                 錯誤,測會在這里彈出一個窗口,然后等待用戶進行操作(隨便點擊一個按鈕才繼續(xù)執(zhí)行)
                 然后因為用戶已經(jīng)點擊了按鈕關(guān)閉 彈出窗口。下一句的dh.WaitUntilExists(3);將會超時,拋出異常
                 */
            doc.Button(Find.ByName("yzp_dic_btn_cls")).Click();
            dh.WaitUntilExists(3);//等待彈出窗口的出來。多等三秒。
            dh.OKButton.Click();//點擊這個窗口的OK按鈕
            ie.RemoveDialogHandler(dh);
            doc.Button(Find.ByName("btn_close")).Click();
        }

正確的示例應(yīng)該是:

protected void f()
        {
            WatiN.Core.DialogHandlers.ConfirmDialogHandler dh = new WatiN.Core.DialogHandlers.ConfirmDialogHandler();

            ie.AddDialogHandler(dh);
            doc.Button(Find.ByName("yzp_dic_btn_cls")).ClickNoWait();//把原來的Click改成這個方法。
            dh.WaitUntilExists(3);//等待彈出窗口的出來。多等三秒。
            dh.OKButton.Click();//點擊這個窗口的OK按鈕
            ie.RemoveDialogHandler(dh);
            doc.Button(Find.ByName("btn_close")).Click();
        }

3、關(guān)于用JS彈出的Modal窗口(模式窗口)的處理.

背景:有些地方需要彈出模式窗口來處理數(shù)據(jù)。

方解:當點擊了彈出模式窗口的按鈕或連接后馬上用IE對像的HtmlDialogs屬生來獲取模式窗口。

         protected void f()
        {
            //假設(shè)下面這行代碼會彈出一個模式窗口把原來的Click改成這個方法。
            //記住這里要用ClickNoWait而不能用Click,否則在模式窗口關(guān)閉之前代碼不會繼續(xù)執(zhí)行。
            ie.Button(Find.ByName("yzp_dic_btn_cls")).ClickNoWait();
            ie.HtmlDialogs[ie.HtmlDialogs.Length - 1].TextField(Find.ByName("Q")).Value = "Hello";
            ie.HtmlDialogs[ie.HtmlDialogs.Length - 1].Button(Find.ByName("btn_query")).Click();
        }

總結(jié)

這個框架還是比較簡單,主要要主意的事情是HTML元素的Click與ClickNoWait方法的區(qū)別。還有對于輸入框,是直接設(shè)置它的Value還是調(diào)用TypeText或AppendText方法模擬用戶手工輸入內(nèi)容。前者不會激發(fā)該控件的任何JS事件,而后者會激KeyDown、KeyUP等事件。

上一頁123下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd