抓取页面元素--ruby篇
2018-06-12 本文已影响0人
sandy测试路
目标:抓取该页面的Followers数量
- 因为做自动化测试时经常需要抓取页面元素用作判断,所以这里作下简单的说明
所需包
- rest-client,nokogiri
nokogiri介绍
- 文档
- 安装: gem install nokogiri
1. 获取elem结果集
- 3种方式获取节点:注意返回的都是数组
-
doc.xpath(xpath)
,通过xpath返回html文档中所有符合条件的节点 -
doc.css(css_selector)
,通过css选择器返回html文档中所有符合条件的节点 doc.search()
2. 操作节点元素
- elem.content,获取节点内容
- elem.attributes,返回节点的所有属性,hash类型
- elem.attributes['id'],获取节点的某个属性值,string类型
- elem.attributes['id'].value,获取节点的某个属性值,string类型
3. 实现
require 'rest-client'
require 'nokogiri'
RestClient.get('https://gitee.com/maxiaoqian'){|res|
if res.code == 200
html_doc = Nokogiri::HTML(res.body) # Nokogiri::HTML::Document
# 获取操作节点元素: Nokogiri::XML::Element
# 返回:
# <div class="follow-num" id="followers-number">
# 42
# </div>
elem = html_doc.xpath('//*[@id="followers-number"]').first
# elem = html_doc.css('div#followers-number').first # css selector
# 返回节点的内容: elem.content 或者 elem.text
puts elem.content.strip
end
}