如何在Nokogiri/Ruby解析期间检查页面上是否存在元素



我如何在Nokogiri (Ruby gem)解析HTML页面期间检查元素(在本例中为div)是否存在于页面上?

在我的测试页面上,它确实存在,因此pp产生预期的Nokogiri输出。但是if语句不起作用,== true似乎是错误的处理方式。有什么改进的建议吗?干杯,克里斯

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

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在布尔上下文中是假的,但Nokogiri::XML::Node不会。我也切换到CSS表示法,因为我发现像这样简单的事情比XPath更清楚,但你可以自由地使用at_xpath或提供XPath或CSS选择器到at,如果你喜欢的话。

另外,三个at方法返回第一个匹配元素或nil,因此如果您只想检查是否存在,它们是不错的选择。

相关内容

  • 没有找到相关文章

最新更新