seleniumrc 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES +4 -0
- data/README +38 -0
- data/Rakefile +1 -1
- data/lib/seleniumrc.rb +2 -4
- data/lib/seleniumrc/dsl/selenium_dsl.rb +8 -143
- data/lib/seleniumrc/extensions/testrunnermediator.rb +2 -2
- data/lib/seleniumrc/mongrel_selenium_server_runner.rb +9 -7
- data/lib/seleniumrc/selenium_configuration.rb +233 -40
- data/lib/seleniumrc/selenium_driver.rb +193 -0
- data/lib/seleniumrc/selenium_element.rb +31 -37
- data/lib/seleniumrc/selenium_page.rb +16 -16
- data/lib/seleniumrc/selenium_server_runner.rb +1 -1
- data/lib/seleniumrc/selenium_test_case.rb +2 -4
- data/lib/seleniumrc/wait_for.rb +3 -10
- data/lib/seleniumrc/webrick_selenium_server_runner.rb +11 -11
- data/spec/seleniumrc/mongrel_selenium_server_runner_spec.rb +31 -38
- data/spec/seleniumrc/selenese_interpreter_spec.rb +12 -12
- data/spec/seleniumrc/selenium_configuration_spec.rb +350 -12
- data/spec/seleniumrc/selenium_driver_spec.rb +104 -0
- data/spec/seleniumrc/selenium_element_spec.rb +78 -76
- data/spec/seleniumrc/selenium_page_spec.rb +39 -29
- data/spec/seleniumrc/selenium_test_case_spec.rb +631 -673
- data/spec/seleniumrc/selenium_test_case_spec_helper.rb +0 -7
- data/spec/seleniumrc/webrick_selenium_server_runner_spec.rb +14 -13
- data/spec/spec_helper.rb +7 -1
- metadata +4 -7
- data/lib/seleniumrc/app_server_checker.rb +0 -43
- data/lib/seleniumrc/extensions/selenium_driver.rb +0 -33
- data/lib/seleniumrc/selenium_context.rb +0 -226
- data/spec/seleniumrc/app_server_checker_spec.rb +0 -56
- data/spec/seleniumrc/selenium_context_spec.rb +0 -362
@@ -0,0 +1,104 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
2
|
+
|
3
|
+
module Seleniumrc
|
4
|
+
describe SeleniumDriver, :shared => true do
|
5
|
+
it_should_behave_like "Selenium"
|
6
|
+
attr_reader :driver, :commands
|
7
|
+
before do
|
8
|
+
@driver = ::Seleniumrc::SeleniumDriver.new("localhost", 4444, "*iexplore", "localhost:3000")
|
9
|
+
end
|
10
|
+
|
11
|
+
def sample_locator
|
12
|
+
"sample_locator"
|
13
|
+
end
|
14
|
+
|
15
|
+
def sample_text
|
16
|
+
"test text"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe SeleniumDriver, "#initialize" do
|
21
|
+
it_should_behave_like "Seleniumrc::SeleniumDriver"
|
22
|
+
|
23
|
+
it "initializes with defaults" do
|
24
|
+
driver.server_host.should == "localhost"
|
25
|
+
driver.server_port.should == 4444
|
26
|
+
driver.browser_start_command.should == "*iexplore"
|
27
|
+
driver.browser_url.should == "localhost:3000"
|
28
|
+
driver.timeout_in_milliseconds.should == 30000
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should start" do
|
32
|
+
mock(driver).do_command.
|
33
|
+
with("getNewBrowserSession", ["*iexplore", "localhost:3000"]).returns(" 12345")
|
34
|
+
|
35
|
+
driver.start
|
36
|
+
driver.instance_variable_get(:@session_id).should == "12345"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe SeleniumDriver, "#inner_html_js" do
|
41
|
+
it_should_behave_like "Seleniumrc::SeleniumDriver"
|
42
|
+
|
43
|
+
it "returns findElement command in js" do
|
44
|
+
driver.inner_html_js(sample_locator).should ==
|
45
|
+
%Q|this.page().findElement("#{sample_locator}").innerHTML|
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe SeleniumDriver, "#wait_for_element_to_contain" do
|
50
|
+
it_should_behave_like "Seleniumrc::SeleniumDriver"
|
51
|
+
|
52
|
+
it "when finding text within time limit, passes" do
|
53
|
+
is_element_present_results = [false, true]
|
54
|
+
mock(driver).do_command('isElementPresent', [sample_locator]).times(2) do
|
55
|
+
result(is_element_present_results.shift)
|
56
|
+
end
|
57
|
+
mock(driver).do_command('getEval', [driver.inner_html_js(sample_locator)]) do
|
58
|
+
result(sample_text)
|
59
|
+
end
|
60
|
+
|
61
|
+
driver.wait_for_element_to_contain(sample_locator, sample_text)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "when element not found in time, fails" do
|
65
|
+
mock(driver).do_command('isElementPresent', [sample_locator]).times(4) do
|
66
|
+
result(false)
|
67
|
+
end
|
68
|
+
|
69
|
+
proc do
|
70
|
+
driver.wait_for_element_to_contain(sample_locator, "")
|
71
|
+
end.should raise_error(Test::Unit::AssertionFailedError, "Timeout exceeded (after 5 sec)")
|
72
|
+
end
|
73
|
+
|
74
|
+
it "when text does not match in time, fails" do
|
75
|
+
is_element_present_results = [false, true, true, true]
|
76
|
+
stub(driver).do_command('isElementPresent', [sample_locator]) do
|
77
|
+
result(is_element_present_results.shift)
|
78
|
+
end
|
79
|
+
stub(driver).do_command('getEval', [driver.inner_html_js(sample_locator)]) do
|
80
|
+
result(sample_text)
|
81
|
+
end
|
82
|
+
|
83
|
+
proc do
|
84
|
+
driver.wait_for_element_to_contain(sample_locator, "wrong text", nil, 1)
|
85
|
+
end.should raise_error(Test::Unit::AssertionFailedError, "Timeout exceeded (after 1 sec)")
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe SeleniumDriver, "#open and #open_and_wait" do
|
90
|
+
it_should_behave_like "Seleniumrc::SeleniumDriver"
|
91
|
+
|
92
|
+
it "opens page and waits for it to load" do
|
93
|
+
mock(driver).do_command("open", ["http://localhost:4000"])
|
94
|
+
mock(driver).do_command("waitForPageToLoad", [driver.default_timeout]) {result}
|
95
|
+
mock(driver).do_command("getTitle", []) {result("Some Title")}
|
96
|
+
|
97
|
+
driver.open("http://localhost:4000")
|
98
|
+
end
|
99
|
+
|
100
|
+
it "aliases #open_and_wait to #open" do
|
101
|
+
driver.method(:open_and_wait).should == driver.method(:open)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
@@ -2,12 +2,14 @@ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
|
2
2
|
|
3
3
|
module Seleniumrc
|
4
4
|
describe SeleniumElement, :shared => true do
|
5
|
+
it_should_behave_like "Selenium"
|
5
6
|
include SeleniumTestCaseSpec
|
6
|
-
|
7
|
+
attr_reader :driver
|
8
|
+
|
7
9
|
before do
|
8
|
-
@
|
10
|
+
@driver = ::Seleniumrc::SeleniumDriver.new('http://test.host', 4000, "*firefox", 'http://test.host')
|
9
11
|
@element_locator ||= "id=foobar"
|
10
|
-
@element = SeleniumElement.new(
|
12
|
+
@element = SeleniumElement.new(driver, @element_locator)
|
11
13
|
end
|
12
14
|
end
|
13
15
|
|
@@ -19,7 +21,7 @@ describe SeleniumElement, "#initialize" do
|
|
19
21
|
end
|
20
22
|
|
21
23
|
it "sets the selenium object" do
|
22
|
-
@element.
|
24
|
+
@element.driver.should == driver
|
23
25
|
end
|
24
26
|
end
|
25
27
|
|
@@ -28,14 +30,14 @@ describe SeleniumElement, "#is_present" do
|
|
28
30
|
|
29
31
|
it "passes when element is present" do
|
30
32
|
ticks = [false, false, false, true]
|
31
|
-
mock(
|
32
|
-
ticks.shift
|
33
|
-
end
|
33
|
+
mock(driver).do_command("isElementPresent", [@element_locator]).times(4) do
|
34
|
+
result ticks.shift
|
35
|
+
end
|
34
36
|
@element.is_present
|
35
37
|
end
|
36
38
|
|
37
39
|
it "fails when element is not present" do
|
38
|
-
stub(
|
40
|
+
stub(driver).is_element_present(@element_locator) {false}
|
39
41
|
proc do
|
40
42
|
@element.is_present
|
41
43
|
end.should raise_error("Expected element 'id=foobar' to be present, but it was not (after 5 sec)")
|
@@ -46,12 +48,12 @@ describe SeleniumElement, "#is_present?" do
|
|
46
48
|
it_should_behave_like "Seleniumrc::SeleniumElement"
|
47
49
|
|
48
50
|
it "returns true when element is present" do
|
49
|
-
mock(
|
51
|
+
mock(driver).is_element_present(@element_locator) {true}
|
50
52
|
@element.is_present?.should be_true
|
51
53
|
end
|
52
54
|
|
53
55
|
it "returns false when element is not present" do
|
54
|
-
mock(
|
56
|
+
mock(driver).is_element_present(@element_locator) {false}
|
55
57
|
@element.is_present?.should be_false
|
56
58
|
end
|
57
59
|
end
|
@@ -61,14 +63,14 @@ describe SeleniumElement, "#is_not_present" do
|
|
61
63
|
|
62
64
|
it "passes when element is not present" do
|
63
65
|
ticks = [true, true, true, false]
|
64
|
-
mock(
|
66
|
+
mock(driver).is_element_present(@element_locator) do
|
65
67
|
ticks.shift
|
66
68
|
end.times(4)
|
67
69
|
@element.is_not_present
|
68
70
|
end
|
69
71
|
|
70
72
|
it "fails when element is present" do
|
71
|
-
stub(
|
73
|
+
stub(driver).is_element_present(@element_locator) {true}
|
72
74
|
proc do
|
73
75
|
@element.is_not_present
|
74
76
|
end.should raise_error("Expected element 'id=foobar' to be absent, but it was not (after 5 sec)")
|
@@ -79,12 +81,12 @@ describe SeleniumElement, "#is_not_present?" do
|
|
79
81
|
it_should_behave_like "Seleniumrc::SeleniumElement"
|
80
82
|
|
81
83
|
it "returns true when element is not present" do
|
82
|
-
mock(
|
84
|
+
mock(driver).is_element_present(@element_locator) {false}
|
83
85
|
@element.is_not_present?.should be_true
|
84
86
|
end
|
85
87
|
|
86
88
|
it "returns false when element is present" do
|
87
|
-
mock(
|
89
|
+
mock(driver).is_element_present(@element_locator) {true}
|
88
90
|
@element.is_not_present?.should be_false
|
89
91
|
end
|
90
92
|
end
|
@@ -94,26 +96,26 @@ describe SeleniumElement, "#has_value" do
|
|
94
96
|
|
95
97
|
it "passes when element is present and value is expected value" do
|
96
98
|
element_ticks = [false, false, false, true]
|
97
|
-
mock(
|
99
|
+
mock(driver).is_element_present(@element_locator) do
|
98
100
|
element_ticks.shift
|
99
101
|
end.times(4)
|
100
102
|
value_ticks = [nil, nil, nil, "joe"]
|
101
|
-
mock(
|
103
|
+
mock(driver).get_value(@element_locator) do
|
102
104
|
value_ticks.shift
|
103
105
|
end.times(4)
|
104
106
|
@element.has_value("joe")
|
105
107
|
end
|
106
108
|
|
107
109
|
it "fails when element is present and not expected value" do
|
108
|
-
mock(
|
109
|
-
stub(
|
110
|
+
mock(driver).is_element_present(@element_locator) {true}
|
111
|
+
stub(driver).get_value(@element_locator) {"jane"}
|
110
112
|
proc do
|
111
113
|
@element.has_value("joe")
|
112
114
|
end.should raise_error
|
113
115
|
end
|
114
116
|
|
115
117
|
it "fails when element is not present" do
|
116
|
-
stub(
|
118
|
+
stub(driver).is_element_present(@element_locator) {false}
|
117
119
|
proc do
|
118
120
|
@element.has_value("joe")
|
119
121
|
end.should raise_error
|
@@ -124,12 +126,12 @@ describe SeleniumElement, "#has_value?" do
|
|
124
126
|
it_should_behave_like "Seleniumrc::SeleniumElement"
|
125
127
|
|
126
128
|
it "returns true when value is expected value" do
|
127
|
-
mock(
|
129
|
+
mock(driver).get_value(@element_locator) {"joe"}
|
128
130
|
@element.has_value?("joe").should be_true
|
129
131
|
end
|
130
132
|
|
131
133
|
it "returns false when value is not expected value" do
|
132
|
-
stub(
|
134
|
+
stub(driver).get_value(@element_locator) {"jane"}
|
133
135
|
@element.has_value?("joe").should be_false
|
134
136
|
end
|
135
137
|
end
|
@@ -143,26 +145,26 @@ describe SeleniumElement, "#has_attribute" do
|
|
143
145
|
|
144
146
|
it "passes when element is present and value is expected value" do
|
145
147
|
element_ticks = [false, false, false, true]
|
146
|
-
mock(
|
148
|
+
mock(driver).is_element_present(@element_locator) do
|
147
149
|
element_ticks.shift
|
148
150
|
end.times(4)
|
149
151
|
label_ticks = ["jane", "jane", "jane", "joe"]
|
150
|
-
mock(
|
152
|
+
mock(driver).get_attribute(@element_locator) do
|
151
153
|
label_ticks.shift
|
152
154
|
end.times(4)
|
153
155
|
@element.has_attribute("joe")
|
154
156
|
end
|
155
157
|
|
156
158
|
it "fails when element is present and value is not expected" do
|
157
|
-
stub(
|
158
|
-
stub(
|
159
|
+
stub(driver).is_element_present(@element_locator) {true}
|
160
|
+
stub(driver).get_attribute(@element_locator) {"jane"}
|
159
161
|
proc do
|
160
162
|
@element.has_attribute("joe")
|
161
163
|
end.should raise_error
|
162
164
|
end
|
163
165
|
|
164
166
|
it "fails when element is not present" do
|
165
|
-
stub(
|
167
|
+
stub(driver).is_element_present(@element_locator) {false}
|
166
168
|
proc do
|
167
169
|
@element.has_attribute("joe")
|
168
170
|
end.should raise_error
|
@@ -178,26 +180,26 @@ describe SeleniumElement, "#has_selected" do
|
|
178
180
|
|
179
181
|
it "passes when element is present and value is expected value" do
|
180
182
|
element_ticks = [false, false, false, true]
|
181
|
-
mock(
|
183
|
+
mock(driver).is_element_present(@element_locator) do
|
182
184
|
element_ticks.shift
|
183
185
|
end.times(4)
|
184
186
|
label_ticks = ["jane", "jane", "jane", "joe"]
|
185
|
-
mock(
|
187
|
+
mock(driver).get_selected_label(@element_locator) do
|
186
188
|
label_ticks.shift
|
187
189
|
end.times(4)
|
188
190
|
@element.has_selected("joe")
|
189
191
|
end
|
190
192
|
|
191
193
|
it "fails when element is present and value is not expected" do
|
192
|
-
stub(
|
193
|
-
stub(
|
194
|
+
stub(driver).is_element_present(@element_locator) {true}
|
195
|
+
stub(driver).get_selected_label(@element_locator) {"jane"}
|
194
196
|
proc do
|
195
197
|
@element.has_selected("joe")
|
196
198
|
end.should raise_error
|
197
199
|
end
|
198
200
|
|
199
201
|
it "fails when element is not present" do
|
200
|
-
stub(
|
202
|
+
stub(driver).is_element_present(@element_locator) {false}
|
201
203
|
proc do
|
202
204
|
@element.has_selected("joe")
|
203
205
|
end.should raise_error
|
@@ -213,26 +215,26 @@ describe SeleniumElement, "#is_visible" do
|
|
213
215
|
|
214
216
|
it "passes when element exists and is visible" do
|
215
217
|
element_ticks = [false, false, false, true]
|
216
|
-
mock(
|
218
|
+
mock(driver).is_element_present(@element_locator) do
|
217
219
|
element_ticks.shift
|
218
220
|
end.times(4)
|
219
221
|
visible_ticks = [false, false, false, true]
|
220
|
-
mock(
|
222
|
+
mock(driver).is_visible(@element_locator) do
|
221
223
|
visible_ticks.shift
|
222
224
|
end.times(4)
|
223
225
|
@element.is_visible
|
224
226
|
end
|
225
227
|
|
226
228
|
it "fails when element is present and is not visible" do
|
227
|
-
stub(
|
228
|
-
stub(
|
229
|
+
stub(driver).is_element_present(@element_locator) {true}
|
230
|
+
stub(driver).is_visible(@element_locator) {false}
|
229
231
|
proc do
|
230
232
|
@element.is_visible
|
231
233
|
end.should raise_error
|
232
234
|
end
|
233
235
|
|
234
236
|
it "fails when element is not present" do
|
235
|
-
stub(
|
237
|
+
stub(driver).is_element_present(@element_locator) {false}
|
236
238
|
proc do
|
237
239
|
@element.is_visible
|
238
240
|
end.should raise_error
|
@@ -248,26 +250,26 @@ describe SeleniumElement, "#is_not_visible" do
|
|
248
250
|
|
249
251
|
it "passes when element exists and is not visible" do
|
250
252
|
element_ticks = [false, false, false, true]
|
251
|
-
mock(
|
253
|
+
mock(driver).is_element_present(@element_locator) do
|
252
254
|
element_ticks.shift
|
253
255
|
end.times(4)
|
254
256
|
visible_ticks = [true, true, true, false]
|
255
|
-
mock(
|
257
|
+
mock(driver).is_visible(@element_locator) do
|
256
258
|
visible_ticks.shift
|
257
259
|
end.times(4)
|
258
260
|
@element.is_not_visible
|
259
261
|
end
|
260
262
|
|
261
263
|
it "fails when element is present and is visible" do
|
262
|
-
stub(
|
263
|
-
stub(
|
264
|
+
stub(driver).is_element_present(@element_locator) {true}
|
265
|
+
stub(driver).is__visible(@element_locator) {true}
|
264
266
|
proc do
|
265
267
|
@element.is_not_visible
|
266
268
|
end.should raise_error
|
267
269
|
end
|
268
270
|
|
269
271
|
it "fails when element is not present" do
|
270
|
-
stub(
|
272
|
+
stub(driver).is_element_present(@element_locator) {false}
|
271
273
|
proc do
|
272
274
|
@element.is_visible
|
273
275
|
end.should raise_error
|
@@ -283,26 +285,26 @@ describe SeleniumElement, "#is_checked" do
|
|
283
285
|
|
284
286
|
it "passes when element is present and value is expected value" do
|
285
287
|
element_ticks = [false, false, false, true]
|
286
|
-
mock(
|
288
|
+
mock(driver).is_element_present(@element_locator) do
|
287
289
|
element_ticks.shift
|
288
290
|
end.times(4)
|
289
291
|
checked_ticks = [false, false, false, true]
|
290
|
-
mock(
|
292
|
+
mock(driver).is_checked(@element_locator) do
|
291
293
|
checked_ticks.shift
|
292
294
|
end.times(4)
|
293
295
|
@element.is_checked
|
294
296
|
end
|
295
297
|
|
296
298
|
it "fails when element is present and value is not expected" do
|
297
|
-
stub(
|
298
|
-
stub(
|
299
|
+
stub(driver).is_element_present(@element_locator) {true}
|
300
|
+
stub(driver).is_checked(@element_locator) {false}
|
299
301
|
proc do
|
300
302
|
@element.is_checked
|
301
303
|
end.should raise_error
|
302
304
|
end
|
303
305
|
|
304
306
|
it "fails when element is not present" do
|
305
|
-
stub(
|
307
|
+
stub(driver).is_element_present(@element_locator) {false}
|
306
308
|
proc do
|
307
309
|
@element.is_checked
|
308
310
|
end.should raise_error
|
@@ -318,26 +320,26 @@ describe SeleniumElement, "#is_not_checked" do
|
|
318
320
|
|
319
321
|
it "passes when element is present and value is expected value" do
|
320
322
|
element_ticks = [false, false, false, true]
|
321
|
-
mock(
|
323
|
+
mock(driver).is_element_present(@element_locator) do
|
322
324
|
element_ticks.shift
|
323
325
|
end.times(4)
|
324
326
|
checked_ticks = [true, true, true, false]
|
325
|
-
mock(
|
327
|
+
mock(driver).is_checked(@element_locator) do
|
326
328
|
checked_ticks.shift
|
327
329
|
end.times(4)
|
328
330
|
@element.is_not_checked
|
329
331
|
end
|
330
332
|
|
331
333
|
it "fails when element is present and value is not expected" do
|
332
|
-
stub(
|
333
|
-
stub(
|
334
|
+
stub(driver).is_element_present(@element_locator) {true}
|
335
|
+
stub(driver).is_checked(@element_locator) {true}
|
334
336
|
proc do
|
335
337
|
@element.is_not_checked
|
336
338
|
end.should raise_error
|
337
339
|
end
|
338
340
|
|
339
341
|
it "fails when element is not present" do
|
340
|
-
stub(
|
342
|
+
stub(driver).is_element_present(@element_locator) {false}
|
341
343
|
proc do
|
342
344
|
@element.is_not_checked
|
343
345
|
end.should raise_error
|
@@ -353,26 +355,26 @@ describe SeleniumElement, "#has_text" do
|
|
353
355
|
|
354
356
|
it "passes when element is present and value is expected value" do
|
355
357
|
element_ticks = [false, false, false, true]
|
356
|
-
mock(
|
358
|
+
mock(driver).is_element_present(@element_locator) do
|
357
359
|
element_ticks.shift
|
358
360
|
end.times(4)
|
359
361
|
checked_ticks = ["no match", "no match", "no match", "match"]
|
360
|
-
mock(
|
362
|
+
mock(driver).get_text(@element_locator) do
|
361
363
|
checked_ticks.shift
|
362
364
|
end.times(4)
|
363
365
|
@element.has_text("match")
|
364
366
|
end
|
365
367
|
|
366
368
|
it "fails when element is present and value is not expected" do
|
367
|
-
stub(
|
368
|
-
stub(
|
369
|
+
stub(driver).is_element_present(@element_locator) {true}
|
370
|
+
stub(driver).get_text(@element_locator) {"no match"}
|
369
371
|
proc do
|
370
372
|
@element.has_text "match"
|
371
373
|
end.should raise_error
|
372
374
|
end
|
373
375
|
|
374
376
|
it "fails when element is not present" do
|
375
|
-
stub(
|
377
|
+
stub(driver).is_element_present(@element_locator) {false}
|
376
378
|
proc do
|
377
379
|
@element.has_text "match"
|
378
380
|
end.should raise_error
|
@@ -389,26 +391,26 @@ describe SeleniumElement, "#contains_text" do
|
|
389
391
|
|
390
392
|
it "passes when element is present and the element contains text" do
|
391
393
|
element_ticks = [false, false, false, true]
|
392
|
-
mock(
|
394
|
+
mock(driver).is_element_present(@element_locator) do
|
393
395
|
element_ticks.shift
|
394
396
|
end.times(4)
|
395
397
|
inner_html_ticks = ["html", "html", "html", "html match html"]
|
396
|
-
mock(
|
398
|
+
mock(driver).get_eval(@evaled_js) do
|
397
399
|
inner_html_ticks.shift
|
398
400
|
end.times(4)
|
399
401
|
@element.contains_text("match")
|
400
402
|
end
|
401
403
|
|
402
404
|
it "fails when element is present and the element does not contain text" do
|
403
|
-
stub(
|
404
|
-
stub(
|
405
|
+
stub(driver).is_element_present(@element_locator) {true}
|
406
|
+
stub(driver).get_eval(@evaled_js) {"html"}
|
405
407
|
proc do
|
406
408
|
@element.contains_text "match"
|
407
409
|
end.should raise_error
|
408
410
|
end
|
409
411
|
|
410
412
|
it "fails when element is not present" do
|
411
|
-
stub(
|
413
|
+
stub(driver).is_element_present(@element_locator) {false}
|
412
414
|
proc do
|
413
415
|
@element.contains_text "match"
|
414
416
|
end.should raise_error
|
@@ -425,26 +427,26 @@ describe SeleniumElement, "#does_not_contain_text" do
|
|
425
427
|
|
426
428
|
it "passes when element is present and the element does not contain text" do
|
427
429
|
element_ticks = [false, false, false, true]
|
428
|
-
mock(
|
430
|
+
mock(driver).is_element_present(@element_locator) do
|
429
431
|
element_ticks.shift
|
430
432
|
end.times(4)
|
431
433
|
inner_html_ticks = ["html match html", "html match html", "html match html", "html"]
|
432
|
-
mock(
|
434
|
+
mock(driver).get_eval(@evaled_js) do
|
433
435
|
inner_html_ticks.shift
|
434
436
|
end.times(4)
|
435
437
|
@element.does_not_contain_text("match")
|
436
438
|
end
|
437
439
|
|
438
440
|
it "fails when element is present and the element contains text" do
|
439
|
-
stub(
|
440
|
-
stub(
|
441
|
+
stub(driver).is_element_present(@element_locator) {true}
|
442
|
+
stub(driver).get_eval(@evaled_js) {"html match html"}
|
441
443
|
proc do
|
442
444
|
@element.does_not_contain_text "match"
|
443
445
|
end.should raise_error
|
444
446
|
end
|
445
447
|
|
446
448
|
it "fails when element is not present" do
|
447
|
-
stub(
|
449
|
+
stub(driver).is_element_present(@element_locator) {false}
|
448
450
|
proc do
|
449
451
|
@element.does_not_contain_text "match"
|
450
452
|
end.should raise_error
|
@@ -461,26 +463,26 @@ describe SeleniumElement, "#has_next_sibling" do
|
|
461
463
|
|
462
464
|
it "passes when element is present and value is expected value" do
|
463
465
|
element_ticks = [false, false, false, true]
|
464
|
-
mock(
|
466
|
+
mock(driver).is_element_present(@element_locator) do
|
465
467
|
element_ticks.shift
|
466
468
|
end.times(4)
|
467
469
|
inner_html_ticks = ["", "", "", "next_element"]
|
468
|
-
mock(
|
470
|
+
mock(driver).get_eval(@evaled_js) do
|
469
471
|
inner_html_ticks.shift
|
470
472
|
end.times(4)
|
471
473
|
@element.has_next_sibling("next_element")
|
472
474
|
end
|
473
475
|
|
474
476
|
it "fails when element is present and value is not expected" do
|
475
|
-
stub(
|
476
|
-
stub(
|
477
|
+
stub(driver).is_element_present(@element_locator) {true}
|
478
|
+
stub(driver).get_eval(@evaled_js) {""}
|
477
479
|
proc do
|
478
480
|
@element.has_next_sibling "next_element"
|
479
481
|
end.should raise_error
|
480
482
|
end
|
481
483
|
|
482
484
|
it "fails when element is not present" do
|
483
|
-
stub(
|
485
|
+
stub(driver).is_element_present(@element_locator) {false}
|
484
486
|
proc do
|
485
487
|
@element.has_next_sibling "match"
|
486
488
|
end.should raise_error
|
@@ -497,7 +499,7 @@ describe SeleniumElement, "#has_text_in_order" do
|
|
497
499
|
|
498
500
|
it "passes when element is present and value is expected value" do
|
499
501
|
element_ticks = [false, false, false, true]
|
500
|
-
mock(
|
502
|
+
mock(driver).is_element_present(@element_locator) do
|
501
503
|
element_ticks.shift
|
502
504
|
end.times(4)
|
503
505
|
get_text_ticks = [
|
@@ -506,22 +508,22 @@ describe SeleniumElement, "#has_text_in_order" do
|
|
506
508
|
"no match",
|
507
509
|
"one\ntwo\nthree",
|
508
510
|
]
|
509
|
-
mock(
|
511
|
+
mock(driver).get_text(@element_locator) do
|
510
512
|
get_text_ticks.shift
|
511
513
|
end.times(4)
|
512
514
|
@element.has_text_in_order('one', 'two', 'three')
|
513
515
|
end
|
514
516
|
|
515
517
|
it "fails when element is present and value is not expected" do
|
516
|
-
stub(
|
517
|
-
stub(
|
518
|
+
stub(driver).is_element_present(@element_locator) {true}
|
519
|
+
stub(driver).get_text(@element_locator) {"no match"}
|
518
520
|
proc do
|
519
521
|
@element.has_text_in_order 'one', 'two', 'three'
|
520
522
|
end.should raise_error
|
521
523
|
end
|
522
524
|
|
523
525
|
it "fails when element is not present" do
|
524
|
-
stub(
|
526
|
+
stub(driver).is_element_present(@element_locator) {false}
|
525
527
|
proc do
|
526
528
|
@element.has_text_in_order 'one', 'two', 'three'
|
527
529
|
end.should raise_error
|