2011-08-05 32 views
17

要素(この場合はdiv)がページに存在する場合、Nokogiri(Ruby gem)でHTMLページの解析中に確認する方法はありますか?要素がページに存在する場合、Nokogiri/Rubyの解析中にチェックする方法は?

私のテストページには存在するので、ppは期待されるノコギリの出力を生成します。しかし、ifステートメントは機能しません。== trueは間違った方法です。改善のための提案? Cheers、Chris

pp page.at('.//div[@class="errorMsg"]') 

if page.at('.//div[@class="errorMsg"]') == true then 
    puts "Error message found on page" 
end 

答えて

30

trueとの比較は適切な方法ではありません。それはそう何かを見つけることができなかった場合at呼び出しがnilを返します。

if page.at_css('div.errorMsg') 
    puts 'Error message found on page' 
else 
    puts 'No error message found on page' 
end 

nilブールコンテキストでfalseyですがNokogiri::XML::Nodeができなくなりますように、1つの方法です。私はCSS notationに切り替えましたが、このような簡単なことはXPathよりもはっきりしていますが、at_xpathを自由に使うことができます。あるいは、XPathやCSSセレクタをatにフィードしてください。

また、3つのatメソッドは最初に一致する要素、つまりnilを返します。そのため、存在を確認したい場合には適切な選択肢です。

関連する問題