我想使用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
需要帮助.....或任何其他解决方案将不胜感激..
答案 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)