Unit testing 有没有办法让WatiN在页面加载完成之前单击链接

Unit testing 有没有办法让WatiN在页面加载完成之前单击链接,unit-testing,automated-tests,watin,Unit Testing,Automated Tests,Watin,我们使用WatiN来测试我们的UI,但一个页面(不幸的是,它不在我们团队的控制之下)需要花费很长时间才能完成加载。有没有办法让WatiN在页面完全渲染完成之前单击页面上的链接?以下是我们找到的代码: IE browser = new IE(....); browser.Button("SlowPageLoadingButton").ClickNoWait(); Link continueLink = browser.Link(Find.ByText("linktext")); continueL

我们使用WatiN来测试我们的UI,但一个页面(不幸的是,它不在我们团队的控制之下)需要花费很长时间才能完成加载。有没有办法让WatiN在页面完全渲染完成之前单击页面上的链接?

以下是我们找到的代码:

IE browser = new IE(....);
browser.Button("SlowPageLoadingButton").ClickNoWait();
Link continueLink = browser.Link(Find.ByText("linktext"));
continueLink.WaitUntilExists();
continueLink.Click();

您应该能够省去对WaitUntilExists()的调用,因为当您调用元素上的方法或属性(如示例中的link.Click())时,WatiN会在内部执行此操作

嗯,, 杰伦·范梅宁
领导dev WatiN

但我不是在呼叫click,我是在呼叫ClickNoWait(),这不意味着它不会等待,除非我呼叫waituntelexists()?+1来回答您的问题;)回答得好!Watin等待的时间由WaitForLoadTimeout属性控制。这里有一篇博文对此进行了一些讨论:>不幸的是,WatiN并没有等待足够长的时间,而是等待页面加载后才开始做任何事情。我们找到了解决方案,使用
ClickNoWait()
加载页面,然后像往常一样查找页面上的链接,但在调用
Click()
之前,请调用链接上的
WaitUntilExists()
。这样,WatiN将在加载链接后立即单击该链接,而不是等到整个页面加载完毕。