陈旧元素引用:元素未附加到DOM - 需要等到使用SitePrism可见/启用元素/元素

时间:2016-05-24 15:42:29

标签: ruby selenium phantomjs capybara site-prism

我想使用wait_until方法直到我的元素可见。目前我正在使用Siteprism方法,如下所示。这是一个内置的Siteprism方法,但看起来它表现不佳,间歇性地抛出错误(DOM中不存在对象)。

@home.wait_until_btn_element_visible

所以我想使用capybara的find方法。值得一提的是哪个是最简单的解决方案。但我在定义CSS时遇到了麻烦。因为我在ruby类中定义css。我想在下面的代码中使用该变量。我怎么能这样做?

page.find('#blah').visible?.should be_true

我想要这样的事情:

page.find(@home.btn_element).visible?.should be_true

看起来它不起作用而不是在下面抛出此错误:

invalid selector: An invalid or illegal selector was specified

需要帮助.....或任何其他解决方案将不胜感激..

1 个答案:

答案 0 :(得分:1)

#find采用某种类型的选择器类型和参数,它不从页面中获取元素。由于(在快速查看源代码之后)看来无法访问site_prism的element :btn_element, ...声明中指定的参数,因此无法在不重新输入的情况下调用#find选择。话虽如此,@home.wait_until_btn_element_visible和你想要做的事情之间确实应该没有什么区别,因为site_prism最终调用Capybaras发现指定了visible: true。唯一的区别是site_prism使用自己的等待超时,因此您可能希望尝试增加SitePrism :: Waiter.default_wait_time或在wait_until_xxx调用中指定更长的等待超时

@home.wait_until_btn_element_visible(10)