2009-08-28 52 views
0

当我在selenium模式下使用webrat时,visit快速返回,如预期的那样。没问题。如何让webrat/selenium“等待”加载页面的CSS?

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

我看到您可以“等待”元素出现,但我看不到我如何等待所有样式被应用。我可以拖延一段时间,但这似乎是内置的片状或缓慢,我试图避免。

很明显,因为我知道我在找什么样式,所以我可以等他们出现。我会写一个这样的帮手,但我认为可能会有一个更为普遍的机制,我还没有看到。

有没有一种简单的方法检测到页面确实真的“准备好”?

回答

2

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

如果您仍然认为它并未等到它应该,您可以使用wait_for_condition这将执行一个JavaScript并等待,直到返回true。这里有一个例子:

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

谢谢。这可能会做到这一点。我们遇到各种问题,实际上是提取元素的当前背景图像。实际上,我们无法模拟“悬停”,因此CSS:悬停选择器将工作,并最终使用JS来更改样式 - 以便在硒内可靠地检测到更改。 – ndp 2009-08-29 22:26:13

0

我们就遇到了这个时候被报告页面加载即使冷聚变部分还在访问用于信息显示的数据库。随后的处理过早发生。

查看Selenium API中的抽象Wait类。你可以编写你自己定制的until()子句,它可以测试出现的某些文本,消失的文本(在加载完成时消失的浮动消息)或者任何其他可以测试的事件硒的剧目。该API页面甚至有一个很好的例子,可以帮助很多人建立起来。