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

时间:2018-07-20 16:59:40

标签: ruby cucumber capybara site-prism

因此,我已经使用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的观点,因为它将大大增加维护量。

我想我必须缺少一些东西才能找到该页面。找到我页面中的object_name,但是我在它周围跳舞并上下搜索,但似乎无法找出问题所在。 救命? :)

1 个答案:

答案 0 :(得分:0)

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

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

@page.object_name