水豚无法匹配 xml 页面

Capybara can not match xml page

我无法匹配水豚 xml 页面上的响应文本。

当我使用 page.should(have_content(arg1)) 时,水豚会报错,指出没有 \html 元素(不应该有,因为它是 xml)。

当我使用 page.should(have_xpath(arg1)) 时它会引发 Element at 40 no longer present in the DOM (Capybara::Webkit::NodeNotAttachedError)

正确的测试方法是什么xml?

当使用 capybara-webkit 时,驱动程序将尝试使用浏览器的 HTML DOM 来查找元素。那行不通,因为您没有 HTML 文档。

一种解决方法是回退到 Capybara 的 string 实现:

xml = Capybara.string(page.body)
expect(xml).to have_xpath(arg1)
expect(xml).to have_content(arg1)

假设您的页面 returns 的内容类型为 text/xml,capybara-webkit 根本不会弄乱响应主体,因此您可以将其传递给 Capybara.string(或者如果你愿意,直接到 Nokogiri)。