watir_robot 0.1.0 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +6 -0
- data/Manifest +1 -4
- data/Rakefile +1 -1
- data/lib/watir_robot.rb +3 -1
- data/lib/watir_robot/exception.rb +10 -1
- data/lib/watir_robot/keywords/area.rb +16 -0
- data/lib/watir_robot/keywords/checkbox.rb +1 -1
- data/lib/watir_robot/keywords/element.rb +4 -4
- data/lib/watir_robot/keywords/form.rb +12 -13
- data/lib/watir_robot/keywords/page.rb +33 -13
- data/lib/watir_robot/keywords/radio.rb +1 -1
- data/lib/watir_robot/keywords/select.rb +2 -2
- data/lib/watir_robot/parser.rb +10 -5
- data/watir_robot.gemspec +4 -4
- metadata +6 -7
- data/scripts/example_tests/resource.txt +0 -14
- data/scripts/example_tests/test.txt +0 -171
- data/scripts/run_server.rb +0 -13
data/CHANGELOG
CHANGED
@@ -1 +1,7 @@
|
|
1
|
+
v0.1.3. Include the new Area module which was coded in a previous version, but omitted from the KeywordLib class.
|
2
|
+
|
3
|
+
v0.1.2. Fix improper use of custom exceptions and exception strings for negative tests.
|
4
|
+
|
5
|
+
v0.1.1. Add support for using Regular Expressions in keyword arguments. Convert string versions of regexes passed back from Robot Framework into actual Ruby regexes which Watir-WebDriver will accept.
|
6
|
+
|
1
7
|
v0.1.0. Initial gem package for Watir Robot. Includes healthy base of Robot Framework keywords for driving the browser, taking a screenshot and using the mouse natively.
|
data/Manifest
CHANGED
@@ -6,6 +6,7 @@ README.rdoc
|
|
6
6
|
Rakefile
|
7
7
|
lib/watir_robot.rb
|
8
8
|
lib/watir_robot/exception.rb
|
9
|
+
lib/watir_robot/keywords/area.rb
|
9
10
|
lib/watir_robot/keywords/browser.rb
|
10
11
|
lib/watir_robot/keywords/button.rb
|
11
12
|
lib/watir_robot/keywords/checkbox.rb
|
@@ -22,7 +23,3 @@ lib/watir_robot/keywords/select.rb
|
|
22
23
|
lib/watir_robot/keywords/table.rb
|
23
24
|
lib/watir_robot/keywords/text_field.rb
|
24
25
|
lib/watir_robot/parser.rb
|
25
|
-
scripts/example_tests/resource.txt
|
26
|
-
scripts/example_tests/test.txt
|
27
|
-
scripts/run_server.rb
|
28
|
-
watir_robot.gemspec
|
data/Rakefile
CHANGED
@@ -10,7 +10,7 @@ Echoe.new('watir_robot') do |p|
|
|
10
10
|
p.description = "Watir Robot - Remote keyword library for Robot Framework"
|
11
11
|
p.url = "http://github.com/semperos/watir-robot"
|
12
12
|
p.author = "Daniel Gregoire"
|
13
|
-
p.ignore_pattern = ["tmp/*", "
|
13
|
+
p.ignore_pattern = ["tmp/*", "scripts/*", "yardoc/*"]
|
14
14
|
p.runtime_dependencies = ['robot_remote_server >=2.5.5.2', 'watir-webdriver >=0.1.8']
|
15
15
|
p.need_tar_gz = false
|
16
16
|
end
|
data/lib/watir_robot.rb
CHANGED
@@ -3,6 +3,7 @@ require 'watir-webdriver'
|
|
3
3
|
require 'watir_robot/parser'
|
4
4
|
require 'watir_robot/exception'
|
5
5
|
|
6
|
+
require 'watir_robot/keywords/area'
|
6
7
|
require 'watir_robot/keywords/browser'
|
7
8
|
require 'watir_robot/keywords/element'
|
8
9
|
require 'watir_robot/keywords/button'
|
@@ -34,7 +35,8 @@ module WatirRobot
|
|
34
35
|
class KeywordLibrary
|
35
36
|
include WatirRobot::Exception
|
36
37
|
include WatirRobot::Parser
|
37
|
-
|
38
|
+
|
39
|
+
include WatirRobot::Area
|
38
40
|
include WatirRobot::Browser
|
39
41
|
include WatirRobot::Button
|
40
42
|
include WatirRobot::CheckBox
|
@@ -13,7 +13,16 @@ module WatirRobot
|
|
13
13
|
# Exception when an HTML element cannot be found on the given page
|
14
14
|
#
|
15
15
|
class ElementDoesNotExist < ObjectDoesNotExist; end
|
16
|
-
|
16
|
+
|
17
|
+
#
|
18
|
+
# Exception when an object is found on a given page erroneously
|
19
|
+
#
|
20
|
+
class ObjectExists < RuntimeError; end
|
21
|
+
#
|
22
|
+
# Exception when an HTML element is found on a page erroneously
|
23
|
+
#
|
24
|
+
class ElementExists < ObjectExists; end
|
25
|
+
|
17
26
|
#
|
18
27
|
# Exception when an object does not match expected parameters
|
19
28
|
#
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module WatirRobot
|
2
|
+
|
3
|
+
module Area
|
4
|
+
|
5
|
+
### Actions ###
|
6
|
+
|
7
|
+
#
|
8
|
+
# Click an area element (acts as a link)
|
9
|
+
#
|
10
|
+
# @param [String] loc attribute/value pairs that match an HTML element
|
11
|
+
#
|
12
|
+
def click_area(loc)
|
13
|
+
@browser.area(parse_location(loc)).click
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -44,7 +44,7 @@ module WatirRobot
|
|
44
44
|
# @param [String] loc attribute/value pairs that match an HTML element
|
45
45
|
#
|
46
46
|
def checkbox_should_not_be_selected(loc)
|
47
|
-
raise(Exception::CheckboxSelectionError, "The checkbox located at #{loc} is checked off.") if
|
47
|
+
raise(Exception::CheckboxSelectionError, "The checkbox located at #{loc} is checked off erroneously.") if
|
48
48
|
@browser.checkbox(parse_location(loc)).set?
|
49
49
|
end
|
50
50
|
|
@@ -54,7 +54,7 @@ module WatirRobot
|
|
54
54
|
# @param [String] loc attribute/value pairs that match an HTML element
|
55
55
|
#
|
56
56
|
def element_should_be_visible(loc)
|
57
|
-
raise(Exception::ElementVisibilityError, "The element described by #{parse_location(loc)} is not visible") unless
|
57
|
+
raise(Exception::ElementVisibilityError, "The element described by #{parse_location(loc)} is not visible.") unless
|
58
58
|
@browser.element(parse_location(loc)).visible?
|
59
59
|
end
|
60
60
|
|
@@ -64,7 +64,7 @@ module WatirRobot
|
|
64
64
|
# @param [String] loc attribute/value pairs that match an HTML element
|
65
65
|
#
|
66
66
|
def element_should_not_be_visible(loc)
|
67
|
-
raise(Exception::ElementVisibilityError, "The element described by #{parse_location(loc)} is
|
67
|
+
raise(Exception::ElementVisibilityError, "The element described by #{parse_location(loc)} is visible erroneously.") if
|
68
68
|
@browser.element(parse_location(loc)).visible?
|
69
69
|
end
|
70
70
|
|
@@ -75,7 +75,7 @@ module WatirRobot
|
|
75
75
|
# @param [String] text the text to compare against
|
76
76
|
#
|
77
77
|
def element_text_should_contain(loc, text)
|
78
|
-
raise(Exception::ElementMatchError, "The element's text #{@browser.element(parse_location(loc)).text} does not contain the text #{text}") unless
|
78
|
+
raise(Exception::ElementMatchError, "The element's text #{@browser.element(parse_location(loc)).text} does not contain the text #{text}.") unless
|
79
79
|
@browser.element(parse_location(loc)).text.include? text
|
80
80
|
end
|
81
81
|
|
@@ -85,7 +85,7 @@ module WatirRobot
|
|
85
85
|
# @param [String] text the text to compare against
|
86
86
|
#
|
87
87
|
def element_text_should_be(loc, text)
|
88
|
-
raise(Exception::ElementMatchError, "The element's text #{@browser.element(parse_location(loc)).text} does not equal #{text}") unless
|
88
|
+
raise(Exception::ElementMatchError, "The element's text #{@browser.element(parse_location(loc)).text} does not equal #{text}.") unless
|
89
89
|
@browser.element(parse_location(loc)).text == text
|
90
90
|
end
|
91
91
|
|
@@ -3,7 +3,6 @@ module WatirRobot
|
|
3
3
|
#
|
4
4
|
# Functionality related to HTML forms as a whole
|
5
5
|
#
|
6
|
-
# @todo Add keywords here
|
7
6
|
module Form
|
8
7
|
|
9
8
|
#
|
@@ -13,7 +12,7 @@ module WatirRobot
|
|
13
12
|
# @param [String] field_loc attribute/value pairs that match an HTML element
|
14
13
|
#
|
15
14
|
def form_should_contain_button(form_loc, field_loc)
|
16
|
-
raise(Exception::ElementMatchError, "The button described by #{field_loc} was not located in the form described by #{form_loc}") unless
|
15
|
+
raise(Exception::ElementMatchError, "The button described by #{field_loc} was not located in the form described by #{form_loc}.") unless
|
17
16
|
@browser.form(parse_location(form_loc)).button(parse_location(field_loc)).exists?
|
18
17
|
end
|
19
18
|
|
@@ -24,7 +23,7 @@ module WatirRobot
|
|
24
23
|
# @param [String] field_loc attribute/value pairs that match an HTML element
|
25
24
|
#
|
26
25
|
def form_should_not_contain_button(form_loc, field_loc)
|
27
|
-
raise(Exception::ElementMatchError, "The button described by #{field_loc} was
|
26
|
+
raise(Exception::ElementMatchError, "The button described by #{field_loc} was erroneously located in the form described by #{form_loc}.") if
|
28
27
|
@browser.form(parse_location(form_loc)).button(parse_location(field_loc)).exists?
|
29
28
|
end
|
30
29
|
|
@@ -35,7 +34,7 @@ module WatirRobot
|
|
35
34
|
# @param [String] field_loc attribute/value pairs that match an HTML element
|
36
35
|
#
|
37
36
|
def form_should_contain_checkbox(form_loc, field_loc)
|
38
|
-
raise(Exception::ElementMatchError, "The checkbox described by #{field_loc} was not located in the form described by #{form_loc}") unless
|
37
|
+
raise(Exception::ElementMatchError, "The checkbox described by #{field_loc} was not located in the form described by #{form_loc}.") unless
|
39
38
|
@browser.form(parse_location(form_loc)).checkbox(parse_location(field_loc)).exists?
|
40
39
|
end
|
41
40
|
|
@@ -46,7 +45,7 @@ module WatirRobot
|
|
46
45
|
# @param [String] field_loc attribute/value pairs that match an HTML element
|
47
46
|
#
|
48
47
|
def form_should_not_contain_checkbox(form_loc, field_loc)
|
49
|
-
raise(Exception::ElementMatchError, "The checkbox described by #{field_loc} was
|
48
|
+
raise(Exception::ElementMatchError, "The checkbox described by #{field_loc} was erroneously located in the form described by #{form_loc}.") if
|
50
49
|
@browser.form(parse_location(form_loc)).checkbox(parse_location(field_loc)).exists?
|
51
50
|
end
|
52
51
|
|
@@ -57,7 +56,7 @@ module WatirRobot
|
|
57
56
|
# @param [String] field_loc attribute/value pairs that match an HTML element
|
58
57
|
#
|
59
58
|
def form_should_contain_filefield(form_loc, field_loc)
|
60
|
-
raise(Exception::ElementMatchError, "The file-field described by #{field_loc} was not located in the form described by #{form_loc}") unless
|
59
|
+
raise(Exception::ElementMatchError, "The file-field described by #{field_loc} was not located in the form described by #{form_loc}.") unless
|
61
60
|
@browser.form(parse_location(form_loc)).file_field(parse_location(field_loc)).exists?
|
62
61
|
end
|
63
62
|
|
@@ -68,7 +67,7 @@ module WatirRobot
|
|
68
67
|
# @param [String] field_loc attribute/value pairs that match an HTML element
|
69
68
|
#
|
70
69
|
def form_should_not_contain_filefield(form_loc, field_loc)
|
71
|
-
raise(Exception::ElementMatchError, "The file-field described by #{field_loc} was
|
70
|
+
raise(Exception::ElementMatchError, "The file-field described by #{field_loc} was erroneously located in the form described by #{form_loc}.") if
|
72
71
|
@browser.form(parse_location(form_loc)).file_field(parse_location(field_loc)).exists?
|
73
72
|
end
|
74
73
|
|
@@ -79,7 +78,7 @@ module WatirRobot
|
|
79
78
|
# @param [String] field_loc attribute/value pairs that match an HTML element
|
80
79
|
#
|
81
80
|
def form_should_contain_radio_button(form_loc, field_loc)
|
82
|
-
raise(Exception::ElementMatchError, "The radio button described by #{field_loc} was not located in the form described by #{form_loc}") unless
|
81
|
+
raise(Exception::ElementMatchError, "The radio button described by #{field_loc} was not located in the form described by #{form_loc}.") unless
|
83
82
|
@browser.form(parse_location(form_loc)).radio(parse_location(field_loc)).exists?
|
84
83
|
end
|
85
84
|
|
@@ -90,7 +89,7 @@ module WatirRobot
|
|
90
89
|
# @param [String] field_loc attribute/value pairs that match an HTML element
|
91
90
|
#
|
92
91
|
def form_should_not_contain_radio_button(form_loc, field_loc)
|
93
|
-
raise(Exception::ElementMatchError, "The radio button described by #{field_loc} was
|
92
|
+
raise(Exception::ElementMatchError, "The radio button described by #{field_loc} was erroneously located in the form described by #{form_loc}.") if
|
94
93
|
@browser.form(parse_location(form_loc)).radio(parse_location(field_loc)).exists?
|
95
94
|
end
|
96
95
|
|
@@ -101,7 +100,7 @@ module WatirRobot
|
|
101
100
|
# @param [String] field_loc attribute/value pairs that match an HTML element
|
102
101
|
#
|
103
102
|
def form_should_contain_select_list(form_loc, field_loc)
|
104
|
-
raise(Exception::ElementMatchError, "The select list described by #{field_loc} was not located in the form described by #{form_loc}") unless
|
103
|
+
raise(Exception::ElementMatchError, "The select list described by #{field_loc} was not located in the form described by #{form_loc}.") unless
|
105
104
|
@browser.form(parse_location(form_loc)).select(parse_location(field_loc)).exists?
|
106
105
|
end
|
107
106
|
|
@@ -112,7 +111,7 @@ module WatirRobot
|
|
112
111
|
# @param [String] field_loc attribute/value pairs that match an HTML element
|
113
112
|
#
|
114
113
|
def form_should_not_contain_select_list(form_loc, field_loc)
|
115
|
-
raise(Exception::ElementMatchError, "The select list described by #{field_loc} was
|
114
|
+
raise(Exception::ElementMatchError, "The select list described by #{field_loc} was erroneously located in the form described by #{form_loc}.") if
|
116
115
|
@browser.form(parse_location(form_loc)).select(parse_location(field_loc)).exists?
|
117
116
|
end
|
118
117
|
|
@@ -123,7 +122,7 @@ module WatirRobot
|
|
123
122
|
# @param [String] field_loc attribute/value pairs that match an HTML element
|
124
123
|
#
|
125
124
|
def form_should_contain_textfield(form_loc, field_loc)
|
126
|
-
raise(Exception::ElementMatchError, "The textfield described by #{field_loc} was not located in the form described by #{form_loc}") unless
|
125
|
+
raise(Exception::ElementMatchError, "The textfield described by #{field_loc} was not located in the form described by #{form_loc}.") unless
|
127
126
|
@browser.form(parse_location(form_loc)).text_field(parse_location(field_loc)).exists?
|
128
127
|
end
|
129
128
|
|
@@ -134,7 +133,7 @@ module WatirRobot
|
|
134
133
|
# @param [String] field_loc attribute/value pairs that match an HTML element
|
135
134
|
#
|
136
135
|
def form_should_not_contain_textfield(form_loc, field_loc)
|
137
|
-
raise(Exception::ElementMatchError, "The textfield described by #{field_loc} was
|
136
|
+
raise(Exception::ElementMatchError, "The textfield described by #{field_loc} was erroneously located in the form described by #{form_loc}.") if
|
138
137
|
@browser.form(parse_location(form_loc)).text_field(parse_location(field_loc)).exists?
|
139
138
|
end
|
140
139
|
|
@@ -90,10 +90,30 @@ module WatirRobot
|
|
90
90
|
# @param [String] text the text to compare against
|
91
91
|
#
|
92
92
|
def page_should_not_contain(text)
|
93
|
-
raise(Exception::PageMatchError, "The expected text #{text} was
|
93
|
+
raise(Exception::PageMatchError, "The expected text #{text} was contained in the page erroneously: #{@browser.text}") if
|
94
94
|
@browser.text.include? text
|
95
95
|
end
|
96
|
-
|
96
|
+
|
97
|
+
#
|
98
|
+
# Verify area tag exists on page
|
99
|
+
#
|
100
|
+
# @param [String] loc attribute/value pairs that match an HTML element
|
101
|
+
#
|
102
|
+
def page_should_contain_area(loc)
|
103
|
+
raise(Exception::ElementDoesNotExist, "The area described by #{loc} is not contained within the page:\n#{@browser.html}") unless
|
104
|
+
@browser.area(parse_location(loc)).exists?
|
105
|
+
end
|
106
|
+
|
107
|
+
#
|
108
|
+
# Verify area tag exists on page
|
109
|
+
#
|
110
|
+
# @param [String] loc attribute/value pairs that match an HTML element
|
111
|
+
#
|
112
|
+
def page_should_not_contain_area(loc)
|
113
|
+
raise(Exception::ElementExists, "The area described by #{loc} is erroneously contained within the page:\n#{@browser.html}") if
|
114
|
+
@browser.area(parse_location(loc)).exists?
|
115
|
+
end
|
116
|
+
|
97
117
|
#
|
98
118
|
# Verify button exists on page
|
99
119
|
#
|
@@ -110,7 +130,7 @@ module WatirRobot
|
|
110
130
|
# @param [String] loc attribute/value pairs that match an HTML element
|
111
131
|
#
|
112
132
|
def page_should_not_contain_button(loc)
|
113
|
-
raise(Exception::
|
133
|
+
raise(Exception::ElementExists, "The button described by #{loc} is erroneously contained within the page:\n#{@browser.html}") if
|
114
134
|
@browser.button(parse_location(loc)).exists?
|
115
135
|
end
|
116
136
|
|
@@ -130,7 +150,7 @@ module WatirRobot
|
|
130
150
|
# @param [String] loc attribute/value pairs that match an HTML element
|
131
151
|
#
|
132
152
|
def page_should_not_contain_checkbox(loc)
|
133
|
-
raise(Exception::
|
153
|
+
raise(Exception::ElementExists, "The checkbox described by #{loc} is erroneously contained within the page:\n#{@browser.html}") if
|
134
154
|
@browser.checkbox(parse_location(loc)).exists?
|
135
155
|
end
|
136
156
|
|
@@ -150,7 +170,7 @@ module WatirRobot
|
|
150
170
|
# @param [String] loc attribute/value pairs that match an HTML element
|
151
171
|
#
|
152
172
|
def page_should_not_contain_element(loc)
|
153
|
-
raise(Exception::
|
173
|
+
raise(Exception::ElementExists, "The element described by #{loc} is erroneously contained within the page:\n#{@browser.html}") if
|
154
174
|
@browser.element(parse_location(loc)).exists?
|
155
175
|
end
|
156
176
|
|
@@ -170,7 +190,7 @@ module WatirRobot
|
|
170
190
|
# @param [String] loc attribute/value pairs that match an HTML element
|
171
191
|
#
|
172
192
|
def page_should_not_contain_image(loc)
|
173
|
-
raise(Exception::
|
193
|
+
raise(Exception::ElementExists, "The image described by #{loc} is erroneously contained within the page:\n#{@browser.html}") if
|
174
194
|
@browser.image(parse_location(loc)).exists?
|
175
195
|
end
|
176
196
|
|
@@ -190,7 +210,7 @@ module WatirRobot
|
|
190
210
|
# @param [String] loc attribute/value pairs that match an HTML element
|
191
211
|
#
|
192
212
|
def page_should_not_contain_link(loc)
|
193
|
-
raise(Exception::
|
213
|
+
raise(Exception::ElementExists, "The link described by #{loc} is erroneously contained within the page:\n#{@browser.html}") if
|
194
214
|
@browser.link(parse_location(loc)).exists?
|
195
215
|
end
|
196
216
|
|
@@ -227,13 +247,13 @@ module WatirRobot
|
|
227
247
|
ordered = ordered.downcase unless ordered == nil
|
228
248
|
if ordered.nil?
|
229
249
|
# Not specified; match either
|
230
|
-
raise(Exception::
|
250
|
+
raise(Exception::ElementExists, "The list described by #{loc} is erroneously contained within the page:\n#{@browser.html}") if
|
231
251
|
(@browser.ol(parse_location(loc)).exists? || @browser.ul(parse_location(loc)).exists?)
|
232
252
|
elsif ordered == 'true'
|
233
|
-
raise(Exception::
|
253
|
+
raise(Exception::ElementExists, "The ordered list described by #{loc} is erroneously contained within the page:\n#{@browser.html}") if
|
234
254
|
@browser.ol(parse_location(loc)).exists?
|
235
255
|
elsif ordered == 'false'
|
236
|
-
raise(Exception::
|
256
|
+
raise(Exception::ElementExists, "The unordered list described by #{loc} is erroneously contained within the page:\n#{@browser.html}") if
|
237
257
|
@browser.ul(parse_location(loc)).exists?
|
238
258
|
else
|
239
259
|
raise(ArgumentError, "If you specify ordered vs. unordered lists, the only valid values are 'true' or 'false' (case-insensitive)")
|
@@ -256,7 +276,7 @@ module WatirRobot
|
|
256
276
|
# @param [String] loc attribute/value pairs that match an HTML element
|
257
277
|
#
|
258
278
|
def page_should_not_contain_radio_button(loc)
|
259
|
-
raise(Exception::
|
279
|
+
raise(Exception::ElementExists, "The radio button described by #{loc} is erroneously contained within the page:\n#{@browser.html}") if
|
260
280
|
@browser.radio(parse_location(loc)).exists?
|
261
281
|
end
|
262
282
|
|
@@ -276,7 +296,7 @@ module WatirRobot
|
|
276
296
|
# @param [String] loc attribute/value pairs that match an HTML element
|
277
297
|
#
|
278
298
|
def page_should_not_contain_select_list(loc)
|
279
|
-
raise(Exception::
|
299
|
+
raise(Exception::ElementExists, "The select list described by #{loc} is not contained within the page erroneously:\n#{@browser.html}") if
|
280
300
|
@browser.select(parse_location(loc)).exists?
|
281
301
|
end
|
282
302
|
|
@@ -296,7 +316,7 @@ module WatirRobot
|
|
296
316
|
# @param [String] loc attribute/value pairs that match an HTML element
|
297
317
|
#
|
298
318
|
def page_should_not_contain_textfield(loc)
|
299
|
-
raise(Exception::
|
319
|
+
raise(Exception::ElementExists, "The text field described by #{loc} is not contained within the page erroneously:\n#{@browser.html}") if
|
300
320
|
@browser.text_field(parse_location(loc)).exists?
|
301
321
|
end
|
302
322
|
|
@@ -35,7 +35,7 @@ module WatirRobot
|
|
35
35
|
# @param [String] loc attribute/value pairs that match an HTML element
|
36
36
|
#
|
37
37
|
def radio_button_should_not_be_selected(loc)
|
38
|
-
raise(Exception::RadioSelectionError, "The radio button located at #{loc} is selected.") if
|
38
|
+
raise(Exception::RadioSelectionError, "The radio button located at #{loc} is selected erroneously.") if
|
39
39
|
@browser.radio(parse_location(loc)).set?
|
40
40
|
end
|
41
41
|
|
@@ -62,7 +62,7 @@ module WatirRobot
|
|
62
62
|
# @param [String] item_loc attribute/value pairs that match an item in a select list
|
63
63
|
#
|
64
64
|
def item_should_be_selected(list_loc, item_loc)
|
65
|
-
raise(Exception::SelectListSelectionError, "The item described by #{item_loc} in the select list described by #{list_loc} is not selected") unless
|
65
|
+
raise(Exception::SelectListSelectionError, "The item described by #{item_loc} in the select list described by #{list_loc} is not selected.") unless
|
66
66
|
@browser.select(parse_location(list_loc)).option(parse_location(item_loc)).selected?
|
67
67
|
end
|
68
68
|
|
@@ -73,7 +73,7 @@ module WatirRobot
|
|
73
73
|
# @param [String] item_loc attribute/value pairs that match an item in a select list
|
74
74
|
#
|
75
75
|
def item_should_not_be_selected(list_loc, item_loc)
|
76
|
-
raise(Exception::SelectListSelectionError, "The item described by #{item_loc} in the select list described by #{list_loc} is selected") if
|
76
|
+
raise(Exception::SelectListSelectionError, "The item described by #{item_loc} in the select list described by #{list_loc} is selected erroneously.") if
|
77
77
|
@browser.select(parse_location(list_loc)).option(parse_location(item_loc)).selected?
|
78
78
|
end
|
79
79
|
|
data/lib/watir_robot/parser.rb
CHANGED
@@ -3,7 +3,7 @@ module WatirRobot
|
|
3
3
|
#
|
4
4
|
# This module contains the functions necessary to convert arguments obtained
|
5
5
|
# from Robot Framework tests and make them meaningful to the underlying
|
6
|
-
# Watir-WebDriver code.
|
6
|
+
# Watir-WebDriver code. These are NOT Robot Framework keywords.
|
7
7
|
#
|
8
8
|
module Parser
|
9
9
|
|
@@ -104,7 +104,7 @@ module WatirRobot
|
|
104
104
|
}
|
105
105
|
|
106
106
|
#
|
107
|
-
# Parses the "location" string provided as argument for locating HTML elements.
|
107
|
+
# (Non-Keyword) Parses the "location" string provided as argument for locating HTML elements.
|
108
108
|
#
|
109
109
|
# Watir-WebDriver expects a hash of parameters by which to search for HTML
|
110
110
|
# elements. This function take arguments from Robot Framework tests in the
|
@@ -127,7 +127,12 @@ module WatirRobot
|
|
127
127
|
attrs = {}
|
128
128
|
attr_list.each do |a|
|
129
129
|
attr_kv = a.split('=')
|
130
|
-
|
130
|
+
# Need to turn strings in format "/regex-here/" into actual regexes
|
131
|
+
if attr_kv[1].start_with?('/')
|
132
|
+
attr_kv[1] = Regexp.new(Regexp.quote(attr_kv[1].gsub('/', '')))
|
133
|
+
end
|
134
|
+
attr_kv[1] = self.trim_sides(attr_kv[1]) unless attr_kv[1].is_a? Regexp
|
135
|
+
attrs[self.trim_sides(attr_kv[0])] = attr_kv[1]
|
131
136
|
end
|
132
137
|
# Watir expects symbols for keys
|
133
138
|
attrs = Hash[attrs.map { |k, v| [k.to_sym, v] }]
|
@@ -139,7 +144,7 @@ module WatirRobot
|
|
139
144
|
end
|
140
145
|
|
141
146
|
#
|
142
|
-
# Parses a key-code argument, provided as an actual character or in ASCII code
|
147
|
+
# (Non-keyword) Parses a key-code argument, provided as an actual character or in ASCII code
|
143
148
|
#
|
144
149
|
# @param [String] key the key for which to find the java.awt.KeyEvent key-code constant
|
145
150
|
# @return [String] the constant for the key event
|
@@ -154,7 +159,7 @@ module WatirRobot
|
|
154
159
|
end
|
155
160
|
|
156
161
|
#
|
157
|
-
# Small utility for trimming whitespace from both sides of a string
|
162
|
+
# (Non-keyword) Small utility for trimming whitespace from both sides of a string
|
158
163
|
#
|
159
164
|
# @param [String] s string to trim both sides of
|
160
165
|
# @return [Strgin] the same string without whitespace on the left or right sides
|
data/watir_robot.gemspec
CHANGED
@@ -2,15 +2,15 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{watir_robot}
|
5
|
-
s.version = "0.1.
|
5
|
+
s.version = "0.1.3"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Daniel Gregoire"]
|
9
|
-
s.date = %q{
|
9
|
+
s.date = %q{2011-01-27}
|
10
10
|
s.description = %q{Watir Robot - Remote keyword library for Robot Framework}
|
11
11
|
s.email = %q{}
|
12
|
-
s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README.rdoc", "lib/watir_robot.rb", "lib/watir_robot/exception.rb", "lib/watir_robot/keywords/browser.rb", "lib/watir_robot/keywords/button.rb", "lib/watir_robot/keywords/checkbox.rb", "lib/watir_robot/keywords/element.rb", "lib/watir_robot/keywords/file_field.rb", "lib/watir_robot/keywords/form.rb", "lib/watir_robot/keywords/image.rb", "lib/watir_robot/keywords/link.rb", "lib/watir_robot/keywords/list.rb", "lib/watir_robot/keywords/native.rb", "lib/watir_robot/keywords/page.rb", "lib/watir_robot/keywords/radio.rb", "lib/watir_robot/keywords/select.rb", "lib/watir_robot/keywords/table.rb", "lib/watir_robot/keywords/text_field.rb", "lib/watir_robot/parser.rb"]
|
13
|
-
s.files = ["CHANGELOG", "KEYWORDS.rdoc", "LICENSE", "Manifest", "README.rdoc", "Rakefile", "lib/watir_robot.rb", "lib/watir_robot/exception.rb", "lib/watir_robot/keywords/browser.rb", "lib/watir_robot/keywords/button.rb", "lib/watir_robot/keywords/checkbox.rb", "lib/watir_robot/keywords/element.rb", "lib/watir_robot/keywords/file_field.rb", "lib/watir_robot/keywords/form.rb", "lib/watir_robot/keywords/image.rb", "lib/watir_robot/keywords/link.rb", "lib/watir_robot/keywords/list.rb", "lib/watir_robot/keywords/native.rb", "lib/watir_robot/keywords/page.rb", "lib/watir_robot/keywords/radio.rb", "lib/watir_robot/keywords/select.rb", "lib/watir_robot/keywords/table.rb", "lib/watir_robot/keywords/text_field.rb", "lib/watir_robot/parser.rb", "
|
12
|
+
s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README.rdoc", "lib/watir_robot.rb", "lib/watir_robot/exception.rb", "lib/watir_robot/keywords/area.rb", "lib/watir_robot/keywords/browser.rb", "lib/watir_robot/keywords/button.rb", "lib/watir_robot/keywords/checkbox.rb", "lib/watir_robot/keywords/element.rb", "lib/watir_robot/keywords/file_field.rb", "lib/watir_robot/keywords/form.rb", "lib/watir_robot/keywords/image.rb", "lib/watir_robot/keywords/link.rb", "lib/watir_robot/keywords/list.rb", "lib/watir_robot/keywords/native.rb", "lib/watir_robot/keywords/page.rb", "lib/watir_robot/keywords/radio.rb", "lib/watir_robot/keywords/select.rb", "lib/watir_robot/keywords/table.rb", "lib/watir_robot/keywords/text_field.rb", "lib/watir_robot/parser.rb"]
|
13
|
+
s.files = ["CHANGELOG", "KEYWORDS.rdoc", "LICENSE", "Manifest", "README.rdoc", "Rakefile", "lib/watir_robot.rb", "lib/watir_robot/exception.rb", "lib/watir_robot/keywords/area.rb", "lib/watir_robot/keywords/browser.rb", "lib/watir_robot/keywords/button.rb", "lib/watir_robot/keywords/checkbox.rb", "lib/watir_robot/keywords/element.rb", "lib/watir_robot/keywords/file_field.rb", "lib/watir_robot/keywords/form.rb", "lib/watir_robot/keywords/image.rb", "lib/watir_robot/keywords/link.rb", "lib/watir_robot/keywords/list.rb", "lib/watir_robot/keywords/native.rb", "lib/watir_robot/keywords/page.rb", "lib/watir_robot/keywords/radio.rb", "lib/watir_robot/keywords/select.rb", "lib/watir_robot/keywords/table.rb", "lib/watir_robot/keywords/text_field.rb", "lib/watir_robot/parser.rb", "watir_robot.gemspec"]
|
14
14
|
s.homepage = %q{http://github.com/semperos/watir-robot}
|
15
15
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Watir_robot", "--main", "README.rdoc"]
|
16
16
|
s.require_paths = ["lib"]
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: watir_robot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 29
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 3
|
10
|
+
version: 0.1.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Daniel Gregoire
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2011-01-27 00:00:00 -05:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -63,6 +63,7 @@ extra_rdoc_files:
|
|
63
63
|
- README.rdoc
|
64
64
|
- lib/watir_robot.rb
|
65
65
|
- lib/watir_robot/exception.rb
|
66
|
+
- lib/watir_robot/keywords/area.rb
|
66
67
|
- lib/watir_robot/keywords/browser.rb
|
67
68
|
- lib/watir_robot/keywords/button.rb
|
68
69
|
- lib/watir_robot/keywords/checkbox.rb
|
@@ -88,6 +89,7 @@ files:
|
|
88
89
|
- Rakefile
|
89
90
|
- lib/watir_robot.rb
|
90
91
|
- lib/watir_robot/exception.rb
|
92
|
+
- lib/watir_robot/keywords/area.rb
|
91
93
|
- lib/watir_robot/keywords/browser.rb
|
92
94
|
- lib/watir_robot/keywords/button.rb
|
93
95
|
- lib/watir_robot/keywords/checkbox.rb
|
@@ -104,9 +106,6 @@ files:
|
|
104
106
|
- lib/watir_robot/keywords/table.rb
|
105
107
|
- lib/watir_robot/keywords/text_field.rb
|
106
108
|
- lib/watir_robot/parser.rb
|
107
|
-
- scripts/example_tests/resource.txt
|
108
|
-
- scripts/example_tests/test.txt
|
109
|
-
- scripts/run_server.rb
|
110
109
|
- watir_robot.gemspec
|
111
110
|
has_rdoc: true
|
112
111
|
homepage: http://github.com/semperos/watir-robot
|
@@ -1,14 +0,0 @@
|
|
1
|
-
*** Settings ***
|
2
|
-
Library Remote http://localhost:8270
|
3
|
-
|
4
|
-
*** Variables ***
|
5
|
-
${BROWSER} firefox
|
6
|
-
${URL} http://bit.ly/watir-example
|
7
|
-
|
8
|
-
*** Keywords ***
|
9
|
-
Open and Maximize
|
10
|
-
[Arguments] ${url} ${browser}=firefox
|
11
|
-
[Documentation] Open a browser to a specific URL and then maximize it to full-screen.
|
12
|
-
Start Browser ${URL} ${BROWSER}
|
13
|
-
Maximize Browser Window
|
14
|
-
|
@@ -1,171 +0,0 @@
|
|
1
|
-
*** Settings ***
|
2
|
-
Suite Setup Open and Maximize ${URL} ${BROWSER}
|
3
|
-
Suite Teardown Close Browser
|
4
|
-
Library Remote http://localhost:8270
|
5
|
-
Resource resource.txt
|
6
|
-
|
7
|
-
*** Test Cases ***
|
8
|
-
Test Browser
|
9
|
-
[Setup] Go To ${URL}
|
10
|
-
Url Should Contain google.com
|
11
|
-
${current_url}= Get Url
|
12
|
-
Go To http://psd.tutsplus.com
|
13
|
-
Url Should Be http://psd.tutsplus.com/
|
14
|
-
Go Back
|
15
|
-
Go Forward
|
16
|
-
Refresh
|
17
|
-
Click Image alt=Photoshop to HTML
|
18
|
-
Switch To Next Window
|
19
|
-
Title Should Be Photoshop to HTML | Rockable Press
|
20
|
-
Switch To Previous Window
|
21
|
-
Title Should Contain Psdtuts+
|
22
|
-
Switch to Window url=http://rockablepress.com/books/photoshop-to-html/
|
23
|
-
Url Should Contain rockablepress.com
|
24
|
-
Switch to Window url=http://psd.tutsplus.com/
|
25
|
-
Close Window 2
|
26
|
-
${windows}= Get Window Count
|
27
|
-
${current_url}= Get Url
|
28
|
-
Click Link href=http://rockablepress.com/books/photoshop-to-html/
|
29
|
-
${windows}= Get Window Count
|
30
|
-
Switch to Next Window
|
31
|
-
Title Should Be Photoshop to HTML | Rockable Press
|
32
|
-
${windows}= Get Window Count
|
33
|
-
Close Window url=http://rockablepress.com/books/photoshop-to-html/
|
34
|
-
Title Should Contain Psdtuts+
|
35
|
-
|
36
|
-
Test Button
|
37
|
-
[Setup] Go To ${URL}
|
38
|
-
Click Button value=Submit
|
39
|
-
|
40
|
-
Test CheckBox
|
41
|
-
[Setup] Go To ${URL}
|
42
|
-
Select Checkbox value=Ruby
|
43
|
-
Checkbox Should Be Selected value=Ruby
|
44
|
-
Unselect Checkbox value=Ruby
|
45
|
-
Checkbox Should Not Be Selected value=Ruby
|
46
|
-
|
47
|
-
Test Element
|
48
|
-
[Setup] Go To ${URL}
|
49
|
-
Click Element name=submit
|
50
|
-
Element Should Be Visible class=errorheader
|
51
|
-
Element Should Not Be Visible name=backupCache
|
52
|
-
Element Text Should Be class=errorheader Looks like you have a question or two that still needs to be filled out.
|
53
|
-
Element Text Should Contain class=errorheader question or two
|
54
|
-
Focus name=entry.0.single
|
55
|
-
Sleep 2 seconds
|
56
|
-
${attr}= Get Element Attribute id=ss-form method
|
57
|
-
${text}= Get Element Text class=errorheader
|
58
|
-
|
59
|
-
Test FileField
|
60
|
-
Go To http://scribd.com/upload/supload
|
61
|
-
Choose File name=upload_doc C:/foobar.txt
|
62
|
-
${file}= Get Filefield Path name=upload_doc
|
63
|
-
|
64
|
-
Test Form
|
65
|
-
[Setup] Go To ${URL}
|
66
|
-
Form Should Contain Button id=ss-form value=Submit
|
67
|
-
Form Should Not Contain Button id=ss-form value=foobar
|
68
|
-
Form Should Contain Checkbox id=ss-form value=Ruby
|
69
|
-
Form Should Not Contain Checkbox id=ss-form value=foobar
|
70
|
-
Go To http://scribd.com/upload/supload
|
71
|
-
Form Should Contain Filefield name=upload_doc id=file
|
72
|
-
Form Should Not Contain Filefield name=upload_doc id=foobar
|
73
|
-
Go Back
|
74
|
-
Form Should Contain Radio Button id=ss-form value=Watir
|
75
|
-
Form Should Not Contain Radio Button id=ss-form value=foobar
|
76
|
-
Form Should Contain Select List id=ss-form id=entry_6
|
77
|
-
Form Should Not Contain Select List id=ss-form id=foobar
|
78
|
-
Form Should Contain Textfield id=ss-form id=entry_0
|
79
|
-
Form Should Not Contain Textfield id=ss-form id=foobar
|
80
|
-
|
81
|
-
Test Image
|
82
|
-
[Setup] Go To ${URL}
|
83
|
-
Go To http://psd.tutsplus.com/
|
84
|
-
Click Image alt=Photoshop to HTML
|
85
|
-
Switch To Window title=Photoshop to HTML | Rockable Press
|
86
|
-
Url Should Be http://rockablepress.com/books/photoshop-to-html/
|
87
|
-
${count}= Get Window Count
|
88
|
-
Switch To Other Window
|
89
|
-
Close Other Window
|
90
|
-
|
91
|
-
Test Link
|
92
|
-
[Setup] Go To ${URL}
|
93
|
-
Click Link text=Terms of Service
|
94
|
-
Url Should Be http://www.google.com/accounts/TOS
|
95
|
-
Go Back
|
96
|
-
|
97
|
-
Test List
|
98
|
-
[Setup] Go To ${URL}
|
99
|
-
${items}= Get List Items class=ss-choices
|
100
|
-
|
101
|
-
Test Native
|
102
|
-
[Setup] Go To ${URL}
|
103
|
-
Capture Screenshot
|
104
|
-
|
105
|
-
Test Page
|
106
|
-
[Setup] Go To ${URL}
|
107
|
-
Title Should Be Watir Example
|
108
|
-
${source}= Get Page Source
|
109
|
-
Log Page Source
|
110
|
-
${text}= Get Page Text
|
111
|
-
${status}= Get Page Status
|
112
|
-
${title}= Get Title
|
113
|
-
${all_links}= Get All Elements By Xpath //a
|
114
|
-
Log Executing JavaScript has been tested. It is simple wrapper around WebDriver's execute_script function, so if there's a problem, it's at the WebDriver level.
|
115
|
-
Page Should Contain What testing tool do you like?
|
116
|
-
Page Should Not Contain Supercalafragilisticexbialadocious
|
117
|
-
Page Should Contain Button value=Submit
|
118
|
-
Page Should Not Contain Button value=Foobar
|
119
|
-
Page Should Contain Checkbox value=Ruby
|
120
|
-
Page Should Not Contain Checkbox value=Clojure
|
121
|
-
Page Should Contain Element id=ss-form
|
122
|
-
Page Should Not Contain Element id=foobar
|
123
|
-
Go To http://www.google.com/
|
124
|
-
Page Should Contain Image src=/images/nav_logo29.png
|
125
|
-
Page Should Not Contain Image src=foobar
|
126
|
-
Go Back
|
127
|
-
Page Should Contain Link href=http://docs.google.com
|
128
|
-
Page Should Not Contain Link href=foobar
|
129
|
-
Page Should Contain List class=ss-choices false
|
130
|
-
Page Should Not Contain List class=foobar
|
131
|
-
Page Should Contain Radio Button value=Watir
|
132
|
-
Page Should Not Contain Radio Button value=foobar
|
133
|
-
Page Should Contain Textfield name=entry.0.single
|
134
|
-
Page Should Not Contain Textfield name=foobar
|
135
|
-
Title Should Be Watir Example
|
136
|
-
Title Should Contain Watir
|
137
|
-
|
138
|
-
Test Radio
|
139
|
-
[Setup] Go To ${URL}
|
140
|
-
Select Radio Button value=Watir
|
141
|
-
Radio Button Should Be Selected value=Watir
|
142
|
-
Radio Button Should Not Be Selected value=Selenium
|
143
|
-
|
144
|
-
Test Select
|
145
|
-
[Setup] Go To ${URL}
|
146
|
-
Go to http://drupal.org/project/issues/search/drupal
|
147
|
-
Select Item From List id=edit-status text=active
|
148
|
-
Item Should Be Selected id=edit-status text=active
|
149
|
-
Item Should Not Be Selected id=edit-status text=needs work
|
150
|
-
Select Item From List id=edit-status text=needs review
|
151
|
-
Item Should Be Selected id=edit-status text=needs review
|
152
|
-
Clear Items From List id=edit-status
|
153
|
-
Item should not be selected id=edit-status text=active
|
154
|
-
Item should not be selected id=edit-status text=needs review
|
155
|
-
|
156
|
-
Test Table
|
157
|
-
[Setup] Go To ${URL}
|
158
|
-
Go To http://www.facebook.com
|
159
|
-
${cell_1}= Get Table Cell ${EMPTY} 1 1
|
160
|
-
Table Cell Should Contain ${EMPTY} 1 1 Email
|
161
|
-
Table Column Should Contain ${EMPTY} 1 logged in
|
162
|
-
Table Row Should Contain ${EMPTY} 3 your password?
|
163
|
-
Table Should Contain ${EMPTY} Password
|
164
|
-
|
165
|
-
Test TextField
|
166
|
-
[Setup] Go To ${URL}
|
167
|
-
Focus TextField name=entry.0.single
|
168
|
-
Input Text name=entry.0.single Foobar
|
169
|
-
Textfield Should Contain name=entry.0.single Foo
|
170
|
-
Textfield Should Be name=entry.0.single Foobar
|
171
|
-
|
data/scripts/run_server.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
#!/usr/bin/env jruby
|
2
|
-
|
3
|
-
if __FILE__ == $0
|
4
|
-
require 'rubygems'
|
5
|
-
require 'robot_remote_server'
|
6
|
-
require 'watir_robot'
|
7
|
-
RobotRemoteServer.new(WatirRobot::KeywordLibrary.new,
|
8
|
-
host = 'localhost',
|
9
|
-
port = 8270,
|
10
|
-
yardoc_file = File.expand_path("#{File.dirname(__FILE__)}/../yardoc"),
|
11
|
-
yardoc_options = [[:docstring, ''], [:file, 'File'], [:source, 'Source Code']])
|
12
|
-
end
|
13
|
-
|