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

三、WatiN 里常用的類

WatiN.Core.Find

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

WatiN.Core.IE

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

屬性

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

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

方法

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

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

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

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

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

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

剛開始時(shí),我的代碼是這樣寫的


        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í)行到這里都出錯(cuò)。下面會(huì)說(shuō)明原因。
            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"));
        }

看到上面的注譯沒(méi)有?那么執(zhí)行完后WatiN都會(huì)出現(xiàn)一個(gè)等待完成超時(shí)的異常,這是因?yàn)辄c(diǎn)擊了登陸按鈕后,如果登陸成功的話,系統(tǒng)已經(jīng)把這個(gè)窗口關(guān)閉了,因?yà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();//這個(gè)方法改成這樣,那點(diǎn)擊后不會(huì)等代碼IE完成了。
            //下面這句是處理登陸的技巧所在,系統(tǒng)打開了另一個(gè)窗口。
            //下面這句是用正則表達(dá)式捕獲這個(gè)窗口。
            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先保存下來(lái)。
        }

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