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

三、WatiN 里常用的類

WatiN.Core.Find

普遍使用的類是Find類的,它是一個工廠類,主要使用它的靜態(tài)方法來實現(xiàn)一些查詢條件。比如像上面的例子中的這個語句“ie.Button(Find.ByName("btnG")).Click();”調(diào)用了Find的靜態(tài)方法ByName來查詢一個name屬性為指定值的HTML元素,然后再調(diào)用IE對象的Button方法把這個元素轉(zhuǎn)換為按鈕對象。

WatiN.Core.IE

這應(yīng)該是關(guān)鍵的類了。他常用的方法是和屬性為

屬性

HtmlDialogs 返回當(dāng)前對象用JavaScript打開的模式窗口(需然幫助文檔中說非模式窗口也包括在內(nèi),但在試用中發(fā)現(xiàn)用window.open打開的窗口沒有被)

Frames 返回當(dāng)前的象里的所有Frames

方法

靜態(tài)方法 AttachToIE 與一個已經(jīng)找開的IE關(guān)連。

Button,TextField,Image,Div 等一系列方法。與Find對象共同使用用于返回IE中特定的按鈕,輸入框,等HTML元素。

四、應(yīng)用中的一些技巧

1、如何去捕獲一個新彈出的窗口。

背景:有些鏈接是從一個新彈出的窗口中打開的,我如果關(guān)連上這類型的窗口。

方案:下面以一個具體例子為例。系統(tǒng)中有一個登陸界面:login.aspx 登陸成功能后會調(diào)用JAVASCRIPT的window.open方法打開系統(tǒng)的主窗口,然后關(guān)閉當(dāng)前這個窗l(fā)ogin.aspx。

剛開始時,我的代碼是這樣寫的


        public void Login(string uid, string passwd)
        {
            string url = Host + "login.aspx";
            ie = new IE();
            ie.GoTo(url);
            ie.WaitForComplete();
            ie.TextField(Find.ById("txtUserName")).Value = uid;
            ie.TextField(Find.ById("txtPwd")).Value = passwd;
            ie.Button(Find.ById("btnLogin")).Click;//注意這里,我每次執(zhí)行到這里都出錯。下面會說明原因。
            ie = IE.AttachToIE(Find.ByTitle(new WatiN.Core.Comparers.RegexComparer(new System.Text.RegularExpressions.Regex(".*綜合信息系統(tǒng).*"))));
            ie.WaitForComplete();
            MainFrame = ie.Frame(Find.ByName("MainFrame_00001"));
            MenuFrame = ie.Frame(Find.ById("leftMenu"));
        }

看到上面的注譯沒有?那么執(zhí)行完后WatiN都會出現(xiàn)一個等待完成超時的異常,這是因為點(diǎn)擊了登陸按鈕后,如果登陸成功的話,系統(tǒng)已經(jīng)把這個窗口關(guān)閉了,因為它根本不可能完成。呵呵~~```所以要修改一下。

        public void Login(string uid, string passwd)
        {
            string url = Host + "frmlogon.aspx";
            ie = new IE();
            ie.GoTo(url);
            ie.WaitForComplete();
            ie.TextField(Find.ById("txtUserName")).Value = uid;
            ie.TextField(Find.ById("txtPwd")).Value = passwd;
            ie.Button(Find.ById("btnLogin")).ClickNoWait();//這個方法改成這樣,那點(diǎn)擊后不會等代碼IE完成了。
            //下面這句是處理登陸的技巧所在,系統(tǒng)打開了另一個窗口。
            //下面這句是用正則表達(dá)式捕獲這個窗口。
            ie = IE.AttachToIE(Find.ByTitle(new WatiN.Core.Comparers.RegexComparer(new System.Text.RegularExpressions.Regex(".*綜合信息系統(tǒng).*"))));
            ie.WaitForComplete();
            MainFrame = ie.Frame(Find.ByName("MainFrame_00001"));
            MenuFrame = ie.Frame(Find.ById("leftMenu"));//把系統(tǒng)里的Frame先保存下來。
        }

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