SitePrism:有时会找到元素,有时不会,而 Capabara 可以
SitePrism: sometimes find elements, sometimes doesn't while Capabara can
我正在使用 Capybara 和 Selenium 来测试我的网站。我也将 Site Prism 用于页面对象模型。我现在可以让一切正常,但是,我不明白为什么有时使用页面元素的操作不起作用,而使用 "natively" 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
那么,为什么会这样?有人遇到过这个问题吗?
默认情况下 site_prism 禁用 Capybaras 在查找元素时的隐式等待行为。这意味着您需要执行与您的水豚示例相同的行为
@mypage = MyPage.new
@mypage.wait_for_sign_in_link
@mypage.sign_in_link.click
您可以在 "Using Capybara Implicit Waits"
下的 site_prism 自述文件中阅读更多相关信息
另一种选择是使用站点棱镜 "Load Validations" 功能来确保页面在开始单击其元素之前已加载
我正在使用 Capybara 和 Selenium 来测试我的网站。我也将 Site Prism 用于页面对象模型。我现在可以让一切正常,但是,我不明白为什么有时使用页面元素的操作不起作用,而使用 "natively" 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
那么,为什么会这样?有人遇到过这个问题吗?
默认情况下 site_prism 禁用 Capybaras 在查找元素时的隐式等待行为。这意味着您需要执行与您的水豚示例相同的行为
@mypage = MyPage.new
@mypage.wait_for_sign_in_link
@mypage.sign_in_link.click
您可以在 "Using Capybara Implicit Waits"
下的 site_prism 自述文件中阅读更多相关信息另一种选择是使用站点棱镜 "Load Validations" 功能来确保页面在开始单击其元素之前已加载