2017-02-27 64 views
0

我们有一些用水豚(Ruby)+ SitePrism + ChromeDriver编写的测试。水豚和斯特雷普姆:忽略加载的元素

在其中一些测试中,有一个页面涉及一些非常缓慢加载iframe,导致测试失败并导致Net :: ReadTimeout异常。

我知道我可以增加超时时间来等待更长的时间,但这会增加测试的总执行时间。

此外,我们并不真正在意iframes本身,只针对该页面中其余的元素。

有什么办法告诉水豚不要等待iframe加载?

如果这是不可能的,至少可以等待一些预定义的时间,如果时间到期,模拟停止页面加载(如在实际浏览器中按下退出按钮)?

回答

1

对于使用硒驱动程序时出现的问题,最简洁的解决方案是使用可编程代理,如膨化比利https://github.com/oesmith/puffing-billy来阻止请求并返回错误或静态内容。如果你使用的是Poltergeist或者capybara-webkit,你可以使用他们的白/黑名单支持来做同样的事情。

+0

当我正在寻找解决方案来解决我们的问题时,我遇到了一个可以解决的问题。不幸的是,我们不能使用任何额外的库。你能否给我举一些不太干净的做同样事情的例子? – Alex

+0

@Alex编写您自己的代理代码,增加超时时间,在测试模式下修改页面源代码,以便它不加载框架等。它们都是不好的解决方案。膨化比利是一种工具,可以帮助您编写更好的性能更高的测试,并且我完全理解不向生产环境添加任何额外库的策略,但这种策略也会阻止您向测试环境中添加有用的工具,这种策略略显疯狂。 –

+0

我完全同意你的看法,但不幸的是,我无法做出改变!我结束了与增加的页面加载超时。 – Alex