ruby - tour - que visitar en los alrededores de tokio
¿Cómo verificar durante el análisis de Nokogiri/Ruby si el elemento existe en la página? (1)
¿Cómo puedo verificar durante el análisis de una página HTML con Nokogiri (Ruby gem) si un elemento, en este caso un div, existe en la página?
En mi página de prueba, existe, por lo que el pp produce el resultado esperado de Nokogiri. Pero la sentencia if no funciona, el == true parece ser la forma incorrecta de hacerlo. ¿Alguna sugerencia para mejorar? Saludos, Chris
pp page.at(''.//div[@class="errorMsg"]'')
if page.at(''.//div[@class="errorMsg"]'') == true then
puts "Error message found on page"
end
Comparando con la true
no es el camino correcto a seguir. La llamada at
devolverá nil
si no encuentra nada, así que:
if page.at_css(''div.errorMsg'')
puts ''Error message found on page''
else
puts ''No error message found on page''
end
es una forma como nil
es falsey en un contexto booleano, pero un Nokogiri::XML::Node
no lo será. También cambié a la notación de CSS porque me parece más claro que XPath para cosas simples como esta, pero puedes usar at_xpath
o feed XPath o un selector de CSS para que te guste más.
Además, los tres métodos devuelven el primer elemento coincidente o nil
por lo que son buenas opciones si solo desea verificar la existencia.