Похоже, у вас проблема с цитированием в HTML, поэтому ваш HTML недействителен. Вы не можете поместить необработанные двойные кавычки в атрибут двойных кавычек:
data-items="[["A",100],["B",200],["C",50]]"
То, что data-items
не является допустимым атрибутом HTML, поэтому я не удивлен, что Нокогири не может его понять.
Попробуйте исправить свое представление, чтобы получить действительный 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]]\']')
или какой-то другой вариант той же идеи.