SitePrism:有时会找到元素,有时候Capabara可以不用

时间:2015-12-13 07:45:00

标签: ruby capybara site-prism


我正在使用Capybara和Selenium来测试我的网站。我还使用Site Prism作为Page Object模型。我现在可以让每件事情都有效,但是,我不明白为什么有时使用页面元素的动作不会起作用,而使用“原生”的Capybara工作。
例如,我有一个Page对象:

class MyPage < SitePrism::Page
 element :sign_in_link, :css, 'a.signin-link'
 element :join_link, :css, "a.join-link"
end

及其实施:

@mypage = MyPage.new
@mypage.sign_in_link.click
# It works at first, then after some repeated test round, it doesn't work sometimes, with error: NoMethodError <br>

我使用时:

find(:css, 'a.signin-link').click #=> always work, but not Page Object model

那么,为什么会这样呢?有没有人遇到过这个问题?

1 个答案:

答案 0 :(得分:1)

默认情况下,site_prism会在查找元素时禁用Capybaras隐式等待行为。这意味着与您需要做的水豚示例具有相同的行为

@mypage = MyPage.new
@mypage.wait_for_sign_in_link
@mypage.sign_in_link.click

您可以在&#34;使用Capybara Implicit Waits&#34;

下的site_prism自述文件中阅读更多相关信息。

另一个选择是使用网站棱镜&#34;加载验证&#34;功能,以确保在开始点击其元素之前加载页面