Capybara无法匹配xml页面

问题描述 投票:1回答:1

我在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的正确方法是什么?

cucumber capybara capybara-webkit
1个回答
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)。

© www.soinside.com 2019 - 2024. All rights reserved.