【问题标题】:Selenium open command sometimes not workSelenium 打开命令有时不起作用
【发布时间】:2009-04-03 09:03:46
【问题描述】:

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

谢谢

库库

【问题讨论】:

标签: selenium


【解决方案1】:

您是否尝试过在 openAndWait 之后放置一个固定暂停(几秒钟)?根据我的经验,selenium 中的所有“打开”和“点击”(甚至是 *AndWait 的)都不能保证在处理下一个 selenium 命令之前页面已完全在浏览器中加载。这就是为什么我总是在这些命令之后添加一个小停顿。

即使您在浏览器中看到正在呈现的页面,这并不一定意味着此时 Selenium 的命令处理器可以使用所有内容。

【讨论】:

  • 我添加了一个暂停,但有时仍然失败。我将 deleteAllCookies 作为第一个命令,在打开之后,它卡在打开状态我接下来尝试的是删除 deleteAllCookies 命令+保持您的建议似乎使我的测试更加稳定谢谢。
  • 您也可以尝试设置 Selenium 速度设置以减慢 Selenium 的整体速度。对此进行试验,直到您的测试变得稳定为止。
  • 是的,我也试过了,有时它确实工作了 6-7 次,然后它就失败了 :( 但是暂停命令使它更稳定地运行。
【解决方案2】:

这适用于 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 库,则需要进行一些修改。

【讨论】:

    【解决方案3】:

    我遇到了类似的问题,无论如何我的都会超时。
    我看到页面已完全呈现,但由于某种原因 selenium.open(relative_url) 将超时。

    我尝试将超时设置为 120 秒,但仍然是同样的问题。将速度设置为非常慢也无济于事。

    我通过使用 try/catch 处理异常来修复它,并且基本上继续验证页面是否真的呈现(就像一个魅力一样)所以我的代码如下所示:

    try {
        selenium.open(relative_url);
    } catch (Exception e) {
        // check if page rendered completely here
    }
    // continue
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-05
      相关资源
      最近更新 更多