有时我的硒测试会给这些建议带来超时:How do you get selenium to recognize that a page loaded?没有解决我的问题。当我使用open或openAndWait时,它主要发生在测试开始时。奇怪的是页面实际上是开放的,但测试只是停止并且不执行fruther。我使用beta-2版本和multiwindow true。我用自定义命令调用我的浏览器。我愿意接受任何建议。
THX
裤裤
答案 0 :(得分:1)
您是否尝试在openAndWait之后添加固定暂停(几秒钟)?根据我的经验,selenium中的所有“打开”和“点击”(甚至* AndWait)都不保证在处理下一个selenium命令之前,页面完全加载到浏览器中。这就是为什么我总是在这些命令之后添加一个小暂停。
即使您在浏览器中看到正在呈现的页面,这并不一定意味着当时Selenium的命令处理器可以使用所有内容。
答案 1 :(得分:1)
这适用于IE6,IE7,IE8,FF,Chrome:
<tr>
<td>waitForCondition</td>
<td>
(selenium.browserbot.getCurrentWindow().$$("body").length == 1) ? true : false;
</td>
<td>10000</td>
</tr>
它只是轮询目标窗口并检查body元素。但是,它仍然容易超时,但您可以将其设置为您喜欢的任何内容。
注意:上面的代码使用Prototype JS来获取body元素。这不是必需的,但如果您使用另一个JS库,则需要进行一些修改。
答案 2 :(得分:1)
我遇到了类似的问题,无论如何我都会暂停
我看到页面已完全呈现,但由于某种原因,selenium.open(relative_url)
将暂停。
我尝试将超时设置为120秒,但问题仍然存在。将速度设置得非常慢也无济于事。
我通过try / catch处理异常来修复它,并且如果页面真的呈现的话,基本上会继续验证(就像魅力一样),所以我的代码看起来像这样:
try {
selenium.open(relative_url);
} catch (Exception e) {
// check if page rendered completely here
}
// continue