使用.net開發Web自動化測試工具

發表于:2015-12-23來源:uml.org.cn作者:不詳點擊數: 標簽:
前段時間,由于測試需要,使用C#結合WatiN組件,開發了一個小小的web自動化測試工具。 WatiN 是一個非常簡單靈活的測試框架,可以模擬用戶在客戶端瀏覽器中的大部份操作,

  前段時間,由于測試需要,使用C#結合WatiN組件,開發了一個小小的web自動化測試工具。

  WatiN 是一個非常簡單靈活的測試框架,可以模擬用戶在客戶端瀏覽器中的大部份操作,API也比較簡單。

  一、實現url調用和web控件的控制很簡單,參考下面代碼:

  請 for (int i = 0; i < txtUrls.Length; i++)

  {

  try

  {

  WatiN.Core.DialogHandlers.AlertDialogHandler dh = new WatiN.Core.DialogHandlers.AlertDialogHandler();

  using (IE ie = new IE(txtUrls[i])) //調用URL,txtUrls[i]為Url地址

  {

  ie.AddDialogHandler(dh);//增加一個控制句柄

  ie.CheckBox("cblSets_6").Checked = false;

  ie.CheckBox("cblSets_8").Checked = true;

  ie.Button("btnSave").ClickNoWait(); //執行保存

  ie.RemoveDialogHandler(dh);

  ie.Close();

  }

  }

  catch (Exception e)

  {

  sb.Append("Execute Err:").Append(txtUrls[i]).Append(";");

  }

  }

  二、WatiN 里常用的類

  WatiN.Core.Find

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

  WatiN.Core.IE

  這應該是最關鍵的類了。他常用的方法是和屬性為

  屬性

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

  Frames 返回當前的象里的所有Frames

  方法

  靜態方法 AttachToIE 與一個已經找開的IE關連。

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

  三、應用中的一些技巧

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

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

  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();//這個方法改成這樣,那點擊后就不會等代碼IE完成了。

  //下面這句就是處理登陸的技巧所在,系統打開了另一個窗口。

  //下面這句就是用正則表達式捕獲這個窗口。

  ie = IE.AttachToIE(Find.ByTitle(new WatiN.Core.Comparers.RegexComparer(new System.Text.RegularExpressions.Regex(".*自動化測試.*"))));

  ie.WaitForComplete();

  MainFrame. = ie.Frame(Find.ByName("MainFrame_00001"));

  MenuFrame. = ie.Frame(Find.ById("leftMenu"));//把系統里的Frame先保存下來。

  }

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

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

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

  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、關于用JS彈出的Modal窗口(模式窗口)的處理。

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

原文轉自:http://www.uml.org.cn/Test/200907281.asp

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97