Capybara无法匹配xml页面

时间:2015-04-10 09:15:37

标签: cucumber capybara capybara-webkit

我在capybara的xml页面上匹配响应文本时遇到问题。

当我使用page.should(have_content(arg1)) capybara引发错误时,没有\html元素(不应该像它的xml那样)。

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

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

1 个答案:

答案 0 :(得分:2)

使用capybara-webkit时,驱动程序会尝试使用浏览器的HTML DOM来查找元素。这不起作用,因为你没有HTML文档。

一个解决方法是回到Capybara的string实施:

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

假设您的网页返回的内容类型为text/xml,则capybara-webkit根本不会对响应主体造成影响,因此您可以将其传递给Capybara.string(或直接传递给Nokogiri如果你愿意的话。