我正在用rspec rails编写测试。
我的视图有类似
的东西<div id = "dataDiv" data-items= "[["A",100],["B",200],["C",50]]" data-check= "check">
我需要测试这个除法的数据,并为此使用xpath。
在我的规格中
it should have_xpath('//div[@id="dataDiv"][@data-check="check"]')
可以,但是
it should have_xpath('//div[@id="dataDiv"][@data-items="[["A",100],["B",200],["C",50]]"]')
抛出错误"nil不能转换为字符串"。
我尝试了以下操作来获取属性值
find.xpath('//div[@id="dataDiv"]/@data-items')
,但会给出与上面相同的错误。但是当我在浏览器中看到时,我确实有@data-items
。
我使用的是rails 3.1和nokogiri 1.4.4
谁能帮我如何得到这个数组?
看起来你的HTML中有引号问题,所以你的HTML无效。你不能在双引号属性中使用原始双引号:
data-items="[["A",100],["B",200],["C",50]]"
data-items
不是一个有效的HTML属性,所以Nokogiri不能理解它,我并不感到惊讶。
尝试修复您的视图以生成有效的HTML:
data-items="[['A',100],['B',200],['C',50]]"
data-items='[["A",100],["B",200],["C",50]]'
,然后更新XPath以匹配所使用的内部引号。
此外,XPath的这一部分也有类似的引用问题:
[@data-items="[["A",100],["B",200],["C",50]]"]
所以你也需要解决这个问题:
have_xpath(%q{//div[@id="dataDiv"][@data-items='[["A",100],["B",200],["C",50]]']})
have_xpath('//div[@id="dataDiv"][@data-items='[["A",100],["B",200],["C",50]]']')