在使用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
发布于 2011-08-06 00:16:14
与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
不是。我也改用了CSS notation,因为我发现像这样的简单事情比XPath更清晰,但是如果你更喜欢,你可以自由地使用at_xpath
,或者提供XPath或者at
的CSS选择器。
另外,这三个at
方法返回第一个匹配的元素或nil
,所以如果您只是想检查是否存在,它们是很好的选择。
https://stackoverflow.com/questions/6958506
复制相似问题