Всем привет. Столкнулся с проблемой и возникло желание поскорее поделиться ею с вами и найти решение. Собственно запускаю тест на Cucumber, который содержит следующие строки в .rb файле (упростил для восприятия):
Given(/^Get a number of team$/) do
number = '/user/276/show'.gsub(/"/, "\'").split('/')
p number[2]
end
…и получаю ошибку undefined method gsub. Почему метод не определен? Это может быть следствием того что не установлены рельсы?
Там скорее всего должно было написано относительно чего undefined method gsub.
Вангуя и погуглив, может не нравятся одинарные скобки, кстати поглядите Ruby Code-Style guide https://github.com/styleguide/ruby.
Ребята, благодарю за советы. Я наверное Вас запутал. Скорее всего я не правильно применяю методы.
Подскажите, как правильно сохранить возвращаемую xpath-ом ссылку и вытянуть из нее число?
Вот пример над которым упорно тружусь (в комментах ход моих мыслей)
Given(/^Get a number of team$/) do
...
link = find(:xpath, "//a[contains( text(),'Text')]") # => возвращает ссылку <a href="/tea/52/info">Text</a>
number = link.gsub(/"/, "\'").split('/') # => разбиваем ссылку по разделителю, преобразовывая ее в массив
p number[2] # => вытягиваем требуемое нам число"52"
end
запуская этот сценарий, получаю ошибку: undefined method "gsub" for #<Capybara::Element tag="a"> (NoMethodError)
Женя, спасибо Вы натолкнули меня на правильные мысли) В Вашем случае нам будет возвращен просто текст ‘Text’. Для решения задачи я использовал гем Nokogiri - для парсинга HTML. В результате вот что получилось:
Given(/^Get a number of team$/) do
...
doc = Nokogiri::HTML(html)
number = doc.xpath("//a[contains( text(),'Text')]").to_html.gsub(/"/, "\'").split('/')
p number[2]
end