Selenium open命令有时不起作用

时间:2009-04-03 09:03:47

标签: selenium

有时我的硒测试会给这些建议带来超时:How do you get selenium to recognize that a page loaded?没有解决我的问题。当我使用open或openAndWait时,它主要发生在测试开始时。奇怪的是页面实际上是开放的,但测试只是停止并且不执行fruther。我使用beta-2版本和multiwindow true。我用自定义命令调用我的浏览器。我愿意接受任何建议。

THX

裤裤

3 个答案:

答案 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