博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

ruby 中使用 Dom技术来查找页面元素

Posted on 2009-03-28 20:38  Watir  阅读(1321)  评论(0编辑  收藏  举报

有些时候可能会根据一些有限的信息,来查找页面的元素,这里举一个例子利用页面文字来查找所在的标签,以淘宝的登录页面为例,使用以下代码可以实现根据账户名来识别对应的节点名称:


 1 require 'watir'ie = Watir::IE.start("http://member1.taobao.com/member/login.jhtml?ssl=false")
 2 def find_tag_by_text(ie,textName)
 3  all_elements = ie.document.body.all
 4  all_elements.each do |object|
 5    if object.innerText.match(textName)
 6      flag = false
 7      all_children = object.children
 8      #如果子对象匹配到,那么退出,退出后flag为true
 9      all_children.each do |child|
10        if child.innerText.match(textName)
11          flag = true
12          break
13        else
14          next
15        end
16      end
17 #      当子节点匹配不到text时,那么表示已经查到了终点
18      unless flag
19        puts object.tagName    
20        break
21      end
22    end
23  end
24 end
25 find_tag_by_text(ie,"账户名")
26 
27 如果要得到该节点的父节点,可以写成:
28 
29  unless flag
30        parent = object.parentElement
31        puts parent.tagName   
32        break
33  end
34 
35 如果要得到该节点子节点,可以写成:
36 
37  unless flag
38         children = object.children
39        puts "_____________"
40        children.each do |child|
41          puts child.tagName
42        break
43  end