0


我正在使用 Capybara 和 Selenium 来测试我的网站。我还将 Site Prism 用于页面对象模型。我现在可以使每件事都正常工作,但是,我不明白为什么有时使用页面元素的操作不起作用,而使用“本机” 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

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

4

1 回答 1

1

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

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

您可以在“使用 Capybara 隐式等待”下的 site_prism README 中阅读更多相关信息

另一种选择是使用站点棱镜“加载验证”功能来确保在开始单击其元素之前加载页面

于 2015-12-13T15:25:30.050 回答