ruby 中使用 Dom技术来查找页面元素 [ 光影人像 东海陈光剑 的博客 ]
有些时候可能会根据一些有限的信息,来查找页面的元素,这里举一个例子利用页面文字来查找所在的标签,以淘宝的登录页面为例,使用以下代码可以实现根据账户名来识别对应的节点名称:
require 'watir'
#ie = Watir::IE.attach(:url, /member1.taobao.com/)
ie = Watir::IE.start("http://member1.taobao.com/member/login.jhtml?ssl=false")
def find_tag_by_text(ie,textName)
all_elements = ie.document.body.all
all_elements.each do |object|
if object.innerText.match(textName)
flag = false
all_children = object.children
#如果子对象匹配到,那么退出,退出后flag为true
all_children.each do |child|
if child.innerText.match(textName)
flag = true
break
else
next
end
end
# 当子节点匹配不到text时,那么表示已经查到了终点
unless flag
puts object.tagName
break
end
end
end
end
find_tag_by_text(ie,"账户名")
如果要得到该节点的父节点,可以写成:
unless flag
parent = object.parentElement
puts parent.tagName
break
end
如果要得到该节点子节点,可以写成:
unless flag
children = object.children
puts "_____________"
children.each do |child|
puts child.tagName
break
end
我们从来只做一件事,分享.
让美在这个世界流转
让倍感无趣的 受伤的 彷徨的 孤独的 或是心情忧郁的 人生黯淡的人们
能有一次机会
去再一次发现这个世界的美
并把美传递给他人
---光影人像(Follow WeChat public number with interest)