技术开发 频道

使用.net开发Web自动化测试工具

  三、应用中的一些技巧

  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窗口(模式窗口)的处理。

  背景:有些地方需要弹出模式窗口来处理数据。

  方解:当点击了弹出模式窗口的按钮或连接后马上用IE对像的HtmlDialogs属生来获取模式窗口。

  protected void f()

  {

  //假设下面这行代码会弹出一个模式窗口把原来的Click改成这个方法。

  //记住这里要用ClickNoWait而不能用Click,否则在模式窗口关闭之前代码不会继续执行。

  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();

  WatiN 官方网址:http://watin.sourceforge.net/可以在上面下载组件。

0
相关文章