test rails example and ruby capybara poltergeist

ruby - rails - ¿Cómo obtener HTML de un elemento al usar Poltergeist?



capybara testing example (3)

Estoy agregando esta respuesta para otros que aterrizan aquí. La solución es muerta simple.

Siguiendo el ejemplo que proporcionaste sería:

find("table")[''outerHTML'']

Estoy usando Capybara con el conductor Poltergeist. Mi pregunta es: ¿cómo obtener el HTML (cadena) de un nodo?

He leído que utilizando el controlador RackTest puedes obtenerlo así:

find("table").native #=> native Nokogiri element find("table").native.to_html #=> "..."

Pero con Poltergeist llamando a #native en un nodo, se devuelve un Capybara::Poltergeist::Node , no un elemento nativo de Nokogiri. Y luego volver a llamar #native en Capybara::Poltergeist::Node devuelve el mismo Capybara::Poltergeist::Node nuevo (es decir, devuelve self ).

Se ha vuelto un poco irritante tener que mirar el HTML de toda la página para encontrar lo que estoy buscando: P


Se puede hacer así.

digamos en google.es en wana fetch INDIA

en el archivo step.rb bajo su función escriba esta línea

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

x mostrará "India"

Terminal o / p


También encuentro irritante a Poltergeist. Esto es lo que hice:

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

Esto toma un selector css, y devuelve un elemento nokogiri nativo, en lugar de la idiotez de poltergeist. También tendrá que require ''nokogiri'' , pero no debería ser un problema, ya que es una dependencia para el poltergeist.