Ответ 1
Я добавляю этот ответ другим, кто приземляется здесь. Решение простое.
следуя приведенному ниже примеру:
find("table")['outerHTML']
Я использую Capybara с драйвером Poltergeist. Мой вопрос: как получить HTML (строку) node?
Я читал, что с помощью драйвера RackTest вы можете сделать это следующим образом:
find("table").native #=> native Nokogiri element
find("table").native.to_html #=> "..."
Но с вызовом poltergeist #native
на node возвращается a Capybara::Poltergeist::Node
, а не собственный элемент Nokogiri. И затем вызов #native
снова в Capybara::Poltergeist::Node
снова возвращает тот же Capybara::Poltergeist::Node
(то есть возвращает self
).
У вас стало немного раздражающим смотреть на HTML со всей страницы, чтобы найти то, что я ищу: P
Я добавляю этот ответ другим, кто приземляется здесь. Решение простое.
следуя приведенному ниже примеру:
find("table")['outerHTML']
Я также считаю, что Полтергейст раздражает. Вот что я сделал:
def nokogiri(selector)
nokogiri = Nokogiri::HTML(page.html);
return nokogiri.css(selector)[0]
end
Это занимает селектор css и возвращает собственный элемент nokogiri, а не полтергейстский идиотизм. Вы также должны будете require 'nokogiri'
, но это не должно быть проблемой, поскольку это зависимость для полтергейста.
Его можно сделать так:
скажем на google.co.in вы wana fetch INDIA
на файле step.rb под вашей функцией напишите эту строку
x = page.find(:xpath,'//*[@id="hplogo"]/div' , :visible => false).text
puts x
x отобразит "Индия"
Терминал o/p