我在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的正确方法是什么?
答案 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如果你愿意的话。