【问题标题】:How do I get webrat / selenium to "wait for" the CSS of the page to load?如何让 webrat / selenium “等待”页面的 CSS 加载?
【发布时间】:2010-11-23 18:53:58
【问题描述】:

当我在 selenium 模式下使用 webrat 时,visit 按预期快速返回。没有问题。

我试图断言我的样式得到了正确应用(通过查看不同元素的背景图像)。我可以通过 JS 获取这些信息,但在我的测试期间似乎没有加载和/或应用样式表。

我看到您可以“等待”元素出现,但我不知道如何等待所有样式都被应用。我可以进行一般的延迟,但这似乎是内置的片状或缓慢,我试图避免这种情况。

显然,因为我知道我在寻找什么样式,所以我可以等待它们出现。我会写这样一个助手,但我在想可能有一个更通用的机制已经到位,我还没有见过。

是否有一种简单的方法可以检测页面是否真的“准备就绪”?

【问题讨论】:

    标签: ruby-on-rails unit-testing tdd selenium webrat


    【解决方案1】:

    这很奇怪。我知道 wait_for_page_to_load 等待整个页面,包括样式表。

    如果您仍然认为它没有按预期等待,您可以使用 wait_for_condition 来执行 javascript 并等待它返回 true。这是一个例子:

        @selenium.wait_for_condition "selenium.browserbot.getCurrentWindow().document.body.style.backgroundColor == 'white'", "60000"
    

    【讨论】:

    • 谢谢。那可能会做到。实际上,我们在提取元素的当前背景图像时遇到了各种各样的问题。我们实际上无法模拟“悬停”以使 CSS :hover 选择器起作用,最终使用 JS 更改样式——以便在 selenium 中可靠地检测更改。
    【解决方案2】:

    我们在报告加载页面时遇到了这种情况,即使 Cold Fusion 部分仍在访问数据库以显示信息。随后的处理将很快发生。

    查看 Selenium API 中的抽象等待类。您可以编写自己的自定义 until() 子句,该子句可以测试是否出现某些文本、要消失的文本(在加载完成时消失的浮动消息的情况下)或您可以测试的任何其他事件硒曲目。 API 页面甚至有一个很好的示例,对设置它有很大帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-20
      • 2017-03-27
      • 1970-01-01
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      • 2017-11-10
      • 2018-06-14
      相关资源
      最近更新 更多