0

因此,我使用 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,但我已经在它周围跳舞并搜索了高低,但似乎无法解决问题。帮助?:)

4

1 回答 1

0

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

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

@page.object_name
于 2018-07-20T17:13:04.903 回答