因此,我已经使用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,但是我在它周围跳舞并上下搜索,但似乎无法找出问题所在。 救命? :)
答案 0 :(得分:0)
@page.find
使用CSS选择器(默认情况下-实际上只是Capybara find
方法),而不是SitePrism element
的名称。
如果@page是SitePrism::Page
或SitePrism::Section
对象,并且您已在其上定义了元素,则只需将其作为@page
上的方法来访问该元素-请参见https://github.com/natritmeyer/site_prism#accessing-the-individual-element
@page.object_name