Site_Prism 使用 page.find 时未找到 POM 元素

Site_Prism not finding POM elements when page.find used

所以我已经使用 SitePrism 为 POM 设置了一个 Capybara、Cucumber 项目,并且在大多数情况下它都能正常工作。当我使用:

Then('Find object name') do
expect(@page).to have_object_name
end

它工作得很好,但是当我开始使用时:

Then('Assign object names text to a variable') do
expect(@page).to have_object_name
valueA = @page.find('object_name').text
end

这不起作用并抛出错误

Unable to find css "object_name" (Capybara::ElementNotFound)

但是,如果我使用:

Then('Assign object names text to a variable') do
expect(@page).to have_object_name
valueA = @page.find(:xpath, 'object_name_XPath').text
end

这也很好,但这种做法违背了 POM 的要点,因为它会大大增加维护工作。

我想我一定是遗漏了一些东西才能从我的页面中找到 page.find 找到 object_name,但我绕着它跳来跳去,到处搜索,但似乎无法找出问题所在出去。 帮助? :)

@page.find 采用 CSS 选择器(默认情况下 - 它实际上只是 Capybara find 方法),而不是 SitePrism element.[=18 的名称=]

如果@page 是一个 SitePrism::PageSitePrism::Section 对象,并且您在其上定义了元素,那么您只需在 @page 上作为方法访问该元素 - 请参阅 https://github.com/natritmeyer/site_prism#accessing-the-individual-element

@page.object_name