如何在rails中使用nokogiri获得xml属性值数组



我正在用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]]']')

相关内容

  • 没有找到相关文章

最新更新