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