我们假设被测网页没有Ajax和框架,以这种情况来分析如何判断网页加载完毕。
现在比较常用判断是否加载的方法有三种:
不停判断IE的状态,如果没有准备好就等待。
实现IE的DocumentComplete事件,标志完成。
不停去查找页面有没有我们想要控件,没有就等待。
第一种方法:不停判断IE的状态,我们要判断IE的哪些状态呢?
一方面,我们需要判断IE的Busy状态,看IE是不是在忙着解析东西,另一方面判断IE的ReadyState状态,看html文档是不是被完全加载进来。
while(ie.Busy || ie.ReadyState !=tagREADYSTATE.READYSTATE_COMPLETE){Thread.Sleep(100);}
用如上的代码就可以等待IE到完成。这里只是简简单单的Demo,所以用了很简单的预计进行判断,我们假设我们的网页没有Ajax,也不会出现Load的死锁,真正的实际工作要比这个复杂一些,比如要定一个Time out,如果除了Timeout的范围,就强行终止,以防止测试过程中的死锁。
而如何判断Ajax是否被加载完,不是我们这个系列的讨论范围,请关注以后的其他系列文章。
这种方法是我比较推荐的一种方法,虽然《.net软件测试自动化之道》推荐的是第二种方法,不过我经过实际的测试,推荐第一种方法。这个方法可以比较好的处理Navigate、Submit等情况,也是WatiN使用的方法(WatiN的用法要复杂很多,考虑到了Frame等其他情况)。
第二种方法:通过绑定Documen