Watir的基本语法
转载自http://bbs.locoy.com/spider-30408-1-1.html
1 1.使用Watir工具,需要在脚本中加上
2 require 'watir'
3 2.创建一个IE的测试实例
4 ie = Watir::IE.new
5 或者在创建的同时直接转到页面
6 ie = Watir::IE.start("http://mytestsite")
7 Watir使用start方法同时创建一个浏览器实例并转到一个页面。
8 3.页面导航
9 ie.goto("http://mytestsite")
10 4.操纵Web页面对象
11 4.1超链接
12 4.1.1使用Text属性点击超链接
13 ie.link(:text , "Pickaxe").click
14 对应的HTML代码为:
15 <a href="http://pragmaticprogrammer.com/titles/ruby/">Pickaxe</a>
16 4.1.2使用URL属性点击超链接
17 ie.link(:url , "http://pragmaticprogrammer.com/titles/ruby/").click
18 对应的HTML代码为:
19 <a href="http://pragmaticprogrammer.com/titles/ruby/">Test Site</a>
20 4.2复选框
21 4.2.1使用name属性设置复选框
22 ie.checkbox(:name, "checkme").set
23 4.2.2使用name属性清除复选框
24 ie.checkbox(:name, "checkme").clear
25 4.2.3使用name和value属性设置复选框
26 ie.checkbox(:name, "checkme", "1").set
27 4.2.4使用name和value属性清除复选框
28 ie.checkbox(:name, "checkme", "1").clear
29 对应的HTML代码为:
30 <input type = "checkbox" name = "checkme" value = "1">
31 4.3单选框
32 4.3.1使用name属性设置单选框
33 ie.radio(:name, "clickme").set
34 4.3.2使用name属性清除单选框
35 ie.radio(:name, "clickme").clear
36 4.3.3使用name和id属性设置单选框
37 ie.radio(:name, "clickme", "1").set
38 4.3.4使用name和id属性清除单选框
39 ie.radio(:name, "clickme", "1").clear
40 对应的HTML代码为:
41 <input type = "radio" name = "clickme" id = "1">
42 4.4下拉框
43 4.4.1使用name属性和值来设置下拉框
44 ie.select_list( :name , "selectme").select("is fun")
45 4.4.2使用name属性和值来清除下拉框
46 ie.select_list( :name , "selectme").clearSelection
47 对应的HTML代码为:
48 <select name = "selectme" > <option name=1> <option name=2>Web Testing <option name=3>in Ruby <option name=4>is fun </select>
49 4.5在Web页面中输入数据
50 4.5.1使用文本输入框的那么属性设置输入内容
51 ie.text_field(:name, "typeinme").set("Watir World")
52 4.5.2清空文本输入框
53 ie.text_field(:name, "typeinme").clear
54 对应的HTML代码为:
55 <input type = "text" name = "typeinme" >
56 4.6从Web页面上提交数据
57 4.6.1按钮
58 4.6.1.1通过值或标题属性点击按钮
59 ie.button(:value, "Click Me").click
60 4.6.1.2通过name属性点击按钮
61 ie.button(:name, "clickme").click
62 对应的HTML代码为:
63 <input type = "button" name = "clickme" value = "Click Me">
64
65 4.6.2表单
66 4.6.2.1表单中的按钮
67 使用value或标题属性
68 ie.button(:value, "Submit").click
69 对应的HTML代码为:
70 <form action = "submit" name = "submitform" method="post"><input type = "submit" value = "Submit"></input></form>
71 4.6.2.2表单中的图片按钮
72 使用那么属性
73 ie.button(:name, "doit").click
74 对应的HTML代码为:
75 <form action = "submit" name = "doitform" method="post"><input type="image" src = "images/doit.gif" name = "doit"></form>
76 4.6.2.3没有按钮的表单
77 Watir can submit a form by identifying it by its name, action and method attributes.
78 可以通过name、action以及method属性来提交表单
79 ie.form(:name, "loginform").submit
80 ie.form(:action, "login").submit
81 对应的HTML代码为:
82 <form action = "login" name = "loginform" method="get"><input name="username" type="text"></input></form>
83 4.6.3框架
84 ie.show_frames可以打印出当前页面框架的数量和名称
85 Watir允许通过名称属性来访问框架,如ie.frame("menu")
86 如果要访问menu框架中的一个超链接,可以ie.frame("menu").link(:text, "Click Menu Item").click
87 4.6.4嵌套框架
88 ie.frame("frame1").frame(:name, "nested_frame")
89 4.6.5新窗口
90 一些Web应用会弹出新窗口或打开一个新窗口,可以使用attach方法来访问并控制新窗口。通过标示新窗口的URL或者title来访问。
91 ie2 = Watir::IE.attach(:url, 'http://mytestsite')
92 ie3 = Watir::IE.attach(:title, 'Test New Window')
93 也可以使用正则表达式
94 ie4 = Watir::IE.attach(:title, /Test New/)
95 注意:不要把新窗口分配到你的ie变量,最好给新窗口一个不同的名字
96 5.验证结果
97 比较好的方法是在测试案例中假如验证点
98 5.1对象存在
99 使用Watir方法contains_text
100 ie.contains_text("Reached test verification point.")
101 if ie.contains_text("Reached test verification point.")
102 puts: "Test passed. Page contains the text: Reached test verification point."
103 else
104 puts: "Test failed! Page didn't contain text: Reached test verification point."
105 end
106 5.2使用test::unit Assertions
107 5.2.1需要test::unit
108 require 'test/unit'
109 5.2.2创建测试实例
110 class TC_myTest < Test::Unit::TestCase
111 fill in Test Case methods here
112 end
113 5.2.3创建测试用例方法
114 在测试类中,需要声明象下面的方法:
115 def test_myTestCase
116 fill in method body with Watir code and assertion here
117 end
118 方法必须以test开头,ruby会随机运行测试案例,如果需要顺序执行,需要在test后加上字母或数字来强迫它顺序执行,比如“test_a_mytest”
119 定义测试方法的类:
120 class TC_myTest < Test::Unit::TestCase
121 def test_ myTestCase
122 Watir code and assertion here
123 end
124 def test_anotherTestCase
125 Watir code and assertion here
126 end
127 def test_aTestCase
128 Watir code and assertion here
129 end
130 end
131 5.2.4使用Assertions
132 Watir通过在一个asert覆写Watir方法支持assertions。
133 assert(ie.contains_text("Reached test verification point.")
134 5.2.5Setup and Teardown
135 def setup
136 fill in code that will run before every test case here
137 end
138 def teardown
139 fill in code that will run after every test case here
140 end
141 6.Tips and Tricks
142 Running Tests With the Browser Not Visible
143 Run the tests with a "-b" option if you don't want the browser to be visible. ex. myTest.rb -b
2 require 'watir'
3 2.创建一个IE的测试实例
4 ie = Watir::IE.new
5 或者在创建的同时直接转到页面
6 ie = Watir::IE.start("http://mytestsite")
7 Watir使用start方法同时创建一个浏览器实例并转到一个页面。
8 3.页面导航
9 ie.goto("http://mytestsite")
10 4.操纵Web页面对象
11 4.1超链接
12 4.1.1使用Text属性点击超链接
13 ie.link(:text , "Pickaxe").click
14 对应的HTML代码为:
15 <a href="http://pragmaticprogrammer.com/titles/ruby/">Pickaxe</a>
16 4.1.2使用URL属性点击超链接
17 ie.link(:url , "http://pragmaticprogrammer.com/titles/ruby/").click
18 对应的HTML代码为:
19 <a href="http://pragmaticprogrammer.com/titles/ruby/">Test Site</a>
20 4.2复选框
21 4.2.1使用name属性设置复选框
22 ie.checkbox(:name, "checkme").set
23 4.2.2使用name属性清除复选框
24 ie.checkbox(:name, "checkme").clear
25 4.2.3使用name和value属性设置复选框
26 ie.checkbox(:name, "checkme", "1").set
27 4.2.4使用name和value属性清除复选框
28 ie.checkbox(:name, "checkme", "1").clear
29 对应的HTML代码为:
30 <input type = "checkbox" name = "checkme" value = "1">
31 4.3单选框
32 4.3.1使用name属性设置单选框
33 ie.radio(:name, "clickme").set
34 4.3.2使用name属性清除单选框
35 ie.radio(:name, "clickme").clear
36 4.3.3使用name和id属性设置单选框
37 ie.radio(:name, "clickme", "1").set
38 4.3.4使用name和id属性清除单选框
39 ie.radio(:name, "clickme", "1").clear
40 对应的HTML代码为:
41 <input type = "radio" name = "clickme" id = "1">
42 4.4下拉框
43 4.4.1使用name属性和值来设置下拉框
44 ie.select_list( :name , "selectme").select("is fun")
45 4.4.2使用name属性和值来清除下拉框
46 ie.select_list( :name , "selectme").clearSelection
47 对应的HTML代码为:
48 <select name = "selectme" > <option name=1> <option name=2>Web Testing <option name=3>in Ruby <option name=4>is fun </select>
49 4.5在Web页面中输入数据
50 4.5.1使用文本输入框的那么属性设置输入内容
51 ie.text_field(:name, "typeinme").set("Watir World")
52 4.5.2清空文本输入框
53 ie.text_field(:name, "typeinme").clear
54 对应的HTML代码为:
55 <input type = "text" name = "typeinme" >
56 4.6从Web页面上提交数据
57 4.6.1按钮
58 4.6.1.1通过值或标题属性点击按钮
59 ie.button(:value, "Click Me").click
60 4.6.1.2通过name属性点击按钮
61 ie.button(:name, "clickme").click
62 对应的HTML代码为:
63 <input type = "button" name = "clickme" value = "Click Me">
64
65 4.6.2表单
66 4.6.2.1表单中的按钮
67 使用value或标题属性
68 ie.button(:value, "Submit").click
69 对应的HTML代码为:
70 <form action = "submit" name = "submitform" method="post"><input type = "submit" value = "Submit"></input></form>
71 4.6.2.2表单中的图片按钮
72 使用那么属性
73 ie.button(:name, "doit").click
74 对应的HTML代码为:
75 <form action = "submit" name = "doitform" method="post"><input type="image" src = "images/doit.gif" name = "doit"></form>
76 4.6.2.3没有按钮的表单
77 Watir can submit a form by identifying it by its name, action and method attributes.
78 可以通过name、action以及method属性来提交表单
79 ie.form(:name, "loginform").submit
80 ie.form(:action, "login").submit
81 对应的HTML代码为:
82 <form action = "login" name = "loginform" method="get"><input name="username" type="text"></input></form>
83 4.6.3框架
84 ie.show_frames可以打印出当前页面框架的数量和名称
85 Watir允许通过名称属性来访问框架,如ie.frame("menu")
86 如果要访问menu框架中的一个超链接,可以ie.frame("menu").link(:text, "Click Menu Item").click
87 4.6.4嵌套框架
88 ie.frame("frame1").frame(:name, "nested_frame")
89 4.6.5新窗口
90 一些Web应用会弹出新窗口或打开一个新窗口,可以使用attach方法来访问并控制新窗口。通过标示新窗口的URL或者title来访问。
91 ie2 = Watir::IE.attach(:url, 'http://mytestsite')
92 ie3 = Watir::IE.attach(:title, 'Test New Window')
93 也可以使用正则表达式
94 ie4 = Watir::IE.attach(:title, /Test New/)
95 注意:不要把新窗口分配到你的ie变量,最好给新窗口一个不同的名字
96 5.验证结果
97 比较好的方法是在测试案例中假如验证点
98 5.1对象存在
99 使用Watir方法contains_text
100 ie.contains_text("Reached test verification point.")
101 if ie.contains_text("Reached test verification point.")
102 puts: "Test passed. Page contains the text: Reached test verification point."
103 else
104 puts: "Test failed! Page didn't contain text: Reached test verification point."
105 end
106 5.2使用test::unit Assertions
107 5.2.1需要test::unit
108 require 'test/unit'
109 5.2.2创建测试实例
110 class TC_myTest < Test::Unit::TestCase
111 fill in Test Case methods here
112 end
113 5.2.3创建测试用例方法
114 在测试类中,需要声明象下面的方法:
115 def test_myTestCase
116 fill in method body with Watir code and assertion here
117 end
118 方法必须以test开头,ruby会随机运行测试案例,如果需要顺序执行,需要在test后加上字母或数字来强迫它顺序执行,比如“test_a_mytest”
119 定义测试方法的类:
120 class TC_myTest < Test::Unit::TestCase
121 def test_ myTestCase
122 Watir code and assertion here
123 end
124 def test_anotherTestCase
125 Watir code and assertion here
126 end
127 def test_aTestCase
128 Watir code and assertion here
129 end
130 end
131 5.2.4使用Assertions
132 Watir通过在一个asert覆写Watir方法支持assertions。
133 assert(ie.contains_text("Reached test verification point.")
134 5.2.5Setup and Teardown
135 def setup
136 fill in code that will run before every test case here
137 end
138 def teardown
139 fill in code that will run after every test case here
140 end
141 6.Tips and Tricks
142 Running Tests With the Browser Not Visible
143 Run the tests with a "-b" option if you don't want the browser to be visible. ex. myTest.rb -b