WatiN的一些应用技巧总结

1.ie.waitforcomplete 和 thread.sleep 的使用

上述的两个方法,用来等待ie的加载
watin的专门的waitforcomple通过侦探ie的busy和ready状态来判断,实际使用时候有自己的局限性

一 般而言可以用ie.waitforcomplete来代替sleep,后来发现如果有类似AJAX postbacks之类的请求时,不是ie的状态能指出的,也即是ie.waitforcomplete失效,此时加上assert断言,页面加载并没有 完成,必须手动来sleep足够的时间
譬如 Atlas UpdatePanel 控件,就必须sleep

当然,还有一个解决办法,就是在ajax之类的postback后,页面肯定存在或肯定不存在的控件的值或状态,譬如

- 1.look for an element that will exist after the "AJAX postback":

        ie.Element(findBy).WaitUntilExists();

- 2. wait until an element does not exist anymore

        ie.Element(findBy).WaitUntilRemoved();
- 3.  wait until an element has a certain (known) value that indicates the "AJAX postback" has finished:

        ie.Element(Find.ById("...") && Find.ByCustom("atributename","knownvalue").WaitUntilExists();

        1.1版本的解决方法:

        ie.Element(Find.ById("...")).WaitUntil(Find.ByCustom("atributename","known value");

---------------------------

2    如果发现watin不支持的html标签时
例如 nobr ,可以自定义一个属性  new Attribute()
注意system也有这个System.Attribute,所以要加上全部的限定符

ElementCollection nobrElements = ie.Elements.Filter(new
WatiN.Core.Attribute("tagname", new
StringEqualsAndCaseInsensitiveComparer("nobr")));
//从控制台检查是否找到了对应的值         
for(int i=0;i                Console.WriteLine(nobrElements.InnerHtml);

----------------------------------

3.    事件的精确控制

譬如当新开页面关闭自己并刷新父页面时候,新开的页面的“保存并关闭”按钮的前台事件可以简单的通过调用

similarSuspectIE.Button("ctl00_MainContentPlaceHolder_Save").FireEventNoWait("onclick");

FireEventNoWait会只触发指定元素的指定事件并忽略waitForComplete(该返回值在弹出窗口的处理上,没有考虑很周全),在面临开了2个以上新窗口,并依次关闭且刷新父页面的情况下,会让测试走过去 --!以往的测试策略无法走通
这个是公安网办 新建嫌疑人-->编辑 -->类似嫌疑人对比 ,然后关闭类似嫌疑人页面,自动关闭当前页面并依次刷新父页面碰到的问题

----------------------------------
4.    confirm等modeless弹出窗口以及弹出的ie窗口的定位
confirm窗口:
//注册Confirm窗口处理方法
            ConfirmDialogHandler deleteConfirm = new ConfirmDialogHandler();
            ie.AddDialogHandler(deleteConfirm);
            //删除按钮,弹出Confirm对话框
            //出现Model类型对话框时候,如Confirm、Alert等,父窗口的按钮点击事件必须为ClickNoWait()
            ie.Button("ctl00_MainContentPlaceHolder_FoldingPanel2_Delete_Button2").ClickNoWait();
            //确认删除
            deleteConfirm.WaitUntilExists();
            deleteConfirm.OKButton.Click();
            //有忽略弹出的Confirm引起的ie返回状态代码和平时不一致的作用
            ie.WaitForComplete();

弹出新ie窗口的定位:
IE newIE= IE.InternetExplorers()[IE.InternetExplorers().Length - 1];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值