2011-08-05 2 views
17

요소 (이 경우 div)가 페이지에 존재하면 Nokogiri (Ruby gem)로 HTML 페이지를 구문 분석하는 동안 어떻게 확인할 수 있습니까?페이지에 요소가있는 경우 Nokogiri/Ruby 구문 분석 중 확인하는 방법?

내 테스트 페이지에는 존재하지 않으므로 pp는 예상되는 Nokogiri 출력을 산출합니다. 그러나 if 문은 작동하지 않습니다. == true는 잘못된 방법입니다. 개선을위한 제안? true와 비교 건배, 크리스

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

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

답변

30

갈 수있는 올바른 방법이 아니다. 그렇게 아무것도 찾을하지 않는 경우 at 호출 nil를 반환합니다 nil 부울 맥락에서 falsey는하지만 Nokogiri::XML::Node이되지 않습니다 하나의 방법으로

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

입니다. 나 또한 CSS notation으로 바꿨는데, 이렇게 단순한 것들에 대해서는 XPath보다 명확하지만, 더 잘 사용하려면 at_xpath을 사용하거나 XPath 또는 CSS 선택기를 at으로 보내면됩니다.

또한 3 개의 at 메서드는 첫 번째 일치 요소 인 nil을 반환하므로 존재 여부를 확인하려는 경우 좋은 방법입니다.