Как получить HTML-код элемента при использовании Poltergeist?

Я использую 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

Ответы

Ответ 1

Я добавляю этот ответ другим, кто приземляется здесь. Решение простое.

следуя приведенному ниже примеру:

find("table")['outerHTML']

Ответ 2

Я также считаю, что Полтергейст раздражает. Вот что я сделал:

def nokogiri(selector)
    nokogiri = Nokogiri::HTML(page.html);
    return nokogiri.css(selector)[0]
end

Это занимает селектор css и возвращает собственный элемент nokogiri, а не полтергейстский идиотизм. Вы также должны будете require 'nokogiri', но это не должно быть проблемой, поскольку это зависимость для полтергейста.

Ответ 3

Его можно сделать так:

скажем на google.co.in вы wana fetch INDIA

enter image description here

на файле step.rb под вашей функцией напишите эту строку

x =  page.find(:xpath,'//*[@id="hplogo"]/div' , :visible => false).text
puts x  

x отобразит "Индия"

Терминал o/p

enter image description here