rufus 0.7 → 0.8

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/rufus.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = "rufus"
3
- gem.version = "0.7"
3
+ gem.version = "0.8"
4
4
  gem.authors = ["Jeremy Stewart"]
5
5
  gem.email = ["jlstewart379@gmail.com"]
6
6
  gem.description = "Page object wrapper for Appium"
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+ require 'rufus/drivers/driver_factory'
3
+ require 'rufus/drivers/iOS_device'
4
+ require 'rufus/drivers/iOS_simulator'
5
+ require 'rufus/drivers/iOS_faster_device'
6
+
7
+ describe Rufus::Drivers::DriverFactory do
8
+
9
+ let(:url){'http://192.168.1.1'}
10
+ context 'getting regular old iOS device driver' do
11
+ let(:iOS_physical_config){ {"browser" =>"iOS", "platform"=>"Mac", "version"=>"6.1", "app"=>"/Users/app/path/rufus.app", "use_physical" => true}}
12
+ it 'creates an instance of a regular a non-optimized iOS driver for physical device' do
13
+ Rufus::Drivers::IOS_Device.should_receive(:new).with(iOS_physical_config)
14
+ Rufus::Drivers::DriverFactory.driver_for(iOS_physical_config)
15
+ end
16
+ context 'getting an optimized iOS driver for physical device'
17
+ let(:iOS_physical_optimized){{"browser" =>"iOS", "platform"=>"Mac", "version"=>"6.1", "app"=>"/Users/app/path/rufus.app", "use_physical" => true, "optimized" => true}}
18
+ it 'creates an instance of an optimized iOS driver for a physical device' do
19
+ Rufus::Drivers::IOS_FasterDevice.should_receive(:new).with(iOS_physical_optimized)
20
+ Rufus::Drivers::DriverFactory.driver_for(iOS_physical_optimized)
21
+ end
22
+ end
23
+ context 'getting a regular non-optimized iOS Simulator driver' do
24
+ let(:iOS_simulator_normal){{"browser" =>"iOS", "platform"=>"Mac", "version"=>"6.1", "app"=>"/Users/app/path/rufus.app", "use_physical" => false, "optimized" => false}}
25
+ it 'creates an instance of a regular non-optimized iOS simulator' do
26
+ Rufus::Drivers::IOS_Simulator.should_receive(:new).with(iOS_simulator_normal)
27
+ Rufus::Drivers::DriverFactory.driver_for(iOS_simulator_normal)
28
+ end
29
+ end
30
+ context 'getting an optimized iOS Simulator driver' do
31
+ let(:iOS_simulator_normal){{"browser" =>"iOS", "platform"=>"Mac", "version"=>"6.1", "app"=>"/Users/app/path/rufus.app", "use_physical" => false, "optimized" => true}}
32
+ it 'creates an instance of a regular optimized iOS simulator' do
33
+ Rufus::Drivers::IOS_FasterSimulator.should_receive(:new).with(iOS_simulator_normal)
34
+ Rufus::Drivers::DriverFactory.driver_for(iOS_simulator_normal)
35
+ end
36
+ end
37
+ end
38
+
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
  require 'rufus/driver'
3
- require 'rufus/drivers/iOS_device'
4
- require 'rufus/drivers/iOS_simulator'
3
+ require 'rufus/drivers/driver_factory'
5
4
  require 'yaml'
6
5
 
7
6
  describe Rufus::Driver do
@@ -13,9 +12,11 @@ describe Rufus::Driver do
13
12
  let(:yaml){double('YAML loader')}
14
13
 
15
14
  context 'config file exists' do
15
+ let(:mock_driver){'driver returned from factory'}
16
16
  before(:each) do
17
17
  File.stub(:exists?).and_return(true)
18
18
  YAML.should_receive(:load).and_return("browser_name" =>"iOS", "platform"=>"Mac", "version"=>"6.1", "app"=>"/Users/app/path/rufus.app")
19
+ Rufus::Drivers::DriverFactory.should_receive(:driver_for).and_return(mock_driver)
19
20
  @driver = Rufus::Driver.new
20
21
  end
21
22
  it 'loads the config file' do
@@ -37,376 +38,6 @@ describe Rufus::Driver do
37
38
  expect{Rufus::Driver.new}.to raise_error(RuntimeError, 'No config.yml found')
38
39
  end
39
40
  end
40
- end
41
-
42
- context 'dealing with elements' do
43
-
44
- let(:mock_driver){double('mock selenium driver')}
45
- let(:mock_elements){double('mock selenium driver elements list')}
46
- let(:mock_element){double('mock selenium driver element')}
47
-
48
-
49
- before(:each) do
50
- File.stub(:exists?).and_return(true)
51
- YAML.should_receive(:load).and_return("browser_name" =>"iOS", "platform"=>"Mac", "version"=>"6.1", "app"=>"/Users/app/path/rufus.app")
52
- @driver = Rufus::Driver.new
53
- Rufus::Drivers::IOS_Simulator.should_receive(:for).and_return(mock_driver)
54
- end
55
-
56
- context 'finding elements' do
57
-
58
- it 'can find an element by name' do
59
- mock_driver.should_receive(:find_element).with(:name, 'rufusButton').and_return(mock_element)
60
- @driver.find({:name => 'rufusButton'}).should == mock_element
61
- end
62
-
63
- it 'can tell if an element does not exist' do
64
- mock_driver.should_receive(:find_element).with(:name, 'rufusButton').and_raise(Selenium::WebDriver::Error::NoSuchElementError)
65
- @driver.find({:name => 'rufusButton'}).should be_nil
66
- end
67
- end
68
-
69
- it 'can click on an element by name' do
70
- mock_driver.should_receive(:find_element).with(:name, 'rufusButton').and_return(mock_element)
71
- mock_element.should_receive(:click)
72
- @driver.click({:name =>'rufusButton'})
73
- end
74
-
75
- it 'can click a button by name only' do
76
- mock_driver.should_receive(:find_element).with(:name, 'rufusButton').and_return(mock_element)
77
- mock_element.should_receive(:click)
78
- @driver.press_button 'rufusButton'
79
- end
80
-
81
- it 'can tell if an element is enabled' do
82
- mock_driver.should_receive(:find_element).with(:name, 'rufusButton').and_return(mock_element)
83
- mock_element.should_receive(:enabled?).and_return(true)
84
- @driver.enabled?(:name => 'rufusButton').should be_true
85
- end
86
-
87
- it 'can tell if an element is displayed on screen' do
88
- mock_driver.should_receive(:find_element).with(:name, 'rufusButton').and_return(mock_element)
89
- mock_element.should_receive(:displayed?).and_return(true)
90
- @driver.displayed?(:name => 'rufusButton').should be_true
91
- end
92
-
93
- it 'can enter text into an element' do
94
- mock_driver.should_receive(:find_element).with(:name, 'rufusButton').and_return(mock_element)
95
- mock_element.should_receive(:click)
96
- mock_element.should_receive(:send_keys).with('text')
97
- @driver.type('text', 'rufusButton')
98
- end
99
- end
100
-
101
- context 'finding all elements of a type' do
102
-
103
- let(:mock_driver){double('mock selenium driver')}
104
- let(:mock1){double('first mock element')}
105
- let(:mock2){double('second mock element')}
106
- let(:mock3){double('third mock element')}
107
-
108
- before(:each) do
109
- File.stub(:exists?).and_return(true)
110
- YAML.should_receive(:load).and_return("browser_name" =>"iOS", "platform"=>"Mac", "version"=>"6.1", "app"=>"/Users/app/path/rufus.app")
111
-
112
- @test_driver = Rufus::Driver.new
113
-
114
- Rufus::Drivers::IOS_Simulator.should_receive(:for).and_return(mock_driver)
115
-
116
- end
117
-
118
- it 'can find all button elements on the screen' do
119
- mock_driver.should_receive(:find_elements).with(:tag_name, 'UIAButton').and_return([mock1, mock2, mock3])
120
- mock1.should_receive(:text).and_return("one")
121
- mock2.should_receive(:text).and_return("two")
122
- mock3.should_receive(:text).and_return("three")
123
- @test_driver.buttons.should == ["one", "two", "three"]
124
- end
125
-
126
- it 'can find all text field elements on the screen' do
127
- mock_driver.should_receive(:find_elements).with(:tag_name, 'UIATextField').and_return([mock1, mock2, mock3])
128
- mock1.should_receive(:text).and_return("one")
129
- mock2.should_receive(:text).and_return("two")
130
- mock3.should_receive(:text).and_return("three")
131
- @test_driver.text_fields.should == ["one", "two", "three"]
132
- end
133
-
134
- it 'can find all labels on the screen' do
135
- mock_driver.should_receive(:find_elements).with(:tag_name, 'UIAStaticText').and_return([mock1, mock2, mock3])
136
- mock1.should_receive(:text).and_return("one")
137
- mock2.should_receive(:text).and_return("two")
138
- mock3.should_receive(:text).and_return("three")
139
- @test_driver.labels.should == ["one", "two", "three"]
140
- end
141
- end
142
-
143
- context 'choosing the url' do
144
- before(:each) do
145
- File.stub(:exists?).and_return(true)
146
- YAML.should_receive(:load).and_return("browser_name" =>"iOS", "platform"=>"Mac", "version"=>"6.1", "app"=>"/Users/app/path/rufus.app")
147
- @driver = Rufus::Driver.new
148
- end
149
- it 'sets the default url' do
150
- @driver.server_url.should eq 'http://127.0.0.1:4723/wd/hub'
151
- end
152
- end
153
-
154
- context 'executing button sequences' do
155
-
156
- let(:mock_driver){double('mock selenium driver')}
157
- let(:mock_rufus_button){double('Mock rufus button')}
158
- let(:mock_rufus_page_button){double('mock selenium driver element')}
159
-
160
- before(:each) do
161
- File.stub(:exists?).and_return(true)
162
- YAML.should_receive(:load).and_return("browser_name" =>"iOS", "platform"=>"Mac", "version"=>"6.1", "app"=>"/Users/app/path/rufus.app")
163
- @driver = Rufus::Driver.new
164
- Rufus::Drivers::IOS_Simulator.should_receive(:for).and_return(mock_driver)
165
- end
166
-
167
- it 'can click buttons in sequence' do
168
- mock_driver.should_receive(:find_element).exactly(20).times.with(:name, 'rufusButton').and_return(mock_rufus_button)
169
- mock_driver.should_receive(:find_element).exactly(10).times.with(:name, 'rufusPageButton').and_return(mock_rufus_page_button)
170
- mock_rufus_button.should_receive(:click).exactly(20).times
171
- mock_rufus_page_button.should_receive(:click).exactly(10).times
172
- @driver.timed_sequence(['rufusButton', 'rufusPageButton', 'rufusButton'] , 10, 0)
173
-
174
- end
175
- end
176
-
177
- context 'finding alerts' do
178
-
179
- let(:mock_driver){double('mock selenium driver')}
180
- let(:mock_alert){double('mock alert view')}
181
- let(:mock_elements){double('mock elements')}
182
- let(:mock_element){double('mock element')}
183
-
184
- before(:each) do
185
- File.stub(:exists?).and_return(true)
186
- YAML.should_receive(:load).and_return("browser_name" =>"iOS", "platform"=>"Mac", "version"=>"6.1", "app"=>"/Users/app/path/rufus.app")
187
- @driver = Rufus::Driver.new
188
- Rufus::Drivers::IOS_Simulator..should_receive(:for).and_return(mock_driver)
189
- end
190
- end
191
-
192
- context 'searching elements' do
193
- let(:mock_element){double('mock element')}
194
- let(:mock_driver){double('mock selenium driver')}
195
-
196
- before(:each) do
197
- File.stub(:exists?).and_return(true)
198
- YAML.should_receive(:load).and_return("browser_name" =>"iOS", "platform"=>"Mac", "version"=>"6.1", "app"=>"/Users/app/path/rufus.app")
199
- @driver = Rufus::Driver.new
200
- end
201
-
202
- it 'can find the class for an element' do
203
- mock_element.should_receive(:tag_name).and_return('UIAAlert')
204
- @driver.class_for(mock_element).should eq('UIAAlert')
205
- end
206
-
207
- context 'matching elements by name' do
208
- it 'returns true if element matches' do
209
- mock_element.should_receive(:attribute).with(:name).and_return('Rufus Alert')
210
- @driver.match?(mock_element, 'Rufus Alert').should be_true
211
- end
212
- it 'returns false if element does not match' do
213
- mock_element.should_receive(:attribute).with(:name).and_return('Some other alert title')
214
- @driver.match?(mock_element, 'Rufus Alert').should be_false
215
- end
216
- end
217
-
218
- context 'clicking alert view buttons' do
219
-
220
- let(:mock_element){double{'mock element'}}
221
- let(:mock_driver){double('mock selenium driver')}
222
-
223
- before(:each) do
224
- File.stub(:exists?).and_return(true)
225
- YAML.should_receive(:load).and_return("browser_name" =>"iOS", "platform"=>"Mac", "version"=>"6.1", "app"=>"/Users/app/path/rufus.app")
226
- @driver = Rufus::Driver.new
227
-
228
- end
229
-
230
- it 'can tell if an alert is in the view hierarchy' do
231
- mock_element.should_receive(:tag_name).and_return('UIAAlert')
232
- @driver.send(:is_alert?, mock_element).should be_true
233
- end
234
- it 'can tell if an alert is not in the view hierarchy' do
235
- mock_element.should_receive(:tag_name).and_return('SomeOtherClass')
236
- @driver.send(:is_alert?, mock_element).should be_false
237
- end
238
-
239
- it 'can tell if a table cell is in the view hierarchy' do
240
- mock_element.should_receive(:tag_name).and_return('UIATableCell')
241
- @driver.send(:is_table_view_cell?, mock_element).should be_true
242
- end
243
-
244
- it 'can click an alert button' do
245
- mock_driver.should_receive(:find_elements).at_least(2).times.with(:tag_name, 'UIAElement').and_return([mock_element])
246
- Rufus::Drivers::IOS_Simulator.should_receive(:for).and_return(mock_driver)
247
- mock_element.should_receive(:tag_name).at_least(2).times.and_return('UIAAlert')
248
- @driver.click_alert('Ok')
249
- end
250
- end
251
-
252
-
253
- context 'starting drivers' do
254
-
255
- let(:yaml){double('YAML loader')}
256
- let(:mock_driver){'a mock app driver'}
257
- let(:url){'http://127.0.0.1:4723/wd/hub'}
258
-
259
- context 'starting iOS device driver' do
260
- before(:each) do
261
- File.stub(:exists?).and_return(true)
262
- @config = {"browser_name" =>"iOS", "platform"=>"Mac", "version"=>"6.1", "app"=>"/Users/app/path/rufus.app", "use_physical" => true}
263
- YAML.should_receive(:load).and_return(@config)
264
- @driver = Rufus::Driver.new
265
- end
266
-
267
- it 'can start the driver for an iOS device' do
268
- Rufus::Drivers::IOS_Device.should_receive(:for).with(@config, url).and_return(mock_driver)
269
- mock_driver.should_receive(:get)
270
- @driver.start
271
- end
272
- end
273
-
274
- context 'starting iOS simulator driver' do
275
- before(:each) do
276
- File.stub(:exists?).and_return(true)
277
- @config = {"browser_name" =>"iOS", "platform"=>"Mac", "version"=>"6.1", "app"=>"/Users/app/path/rufus.app", "use_physical" => false}
278
- YAML.should_receive(:load).and_return(@config)
279
- @driver = Rufus::Driver.new
280
- end
281
-
282
- it 'can start the driver for an iOS simulator' do
283
- Rufus::Drivers::IOS_Simulator.should_receive(:for).with(@config, url).and_return(mock_driver)
284
- mock_driver.should_receive(:get)
285
- @driver.start
286
- end
287
- end
288
- end
289
- context 'verifying and setting device orientation' do
290
-
291
- let(:yaml){double('YAML loader')}
292
- let(:mock_driver){'a mock app driver'}
293
- let(:url){'http://127.0.0.1:4723/wd/hub'}
294
-
295
- context 'orientation' do
296
-
297
- before(:each) do
298
- File.stub(:exists?).and_return(true)
299
- @config = {"browser_name" =>"iOS", "platform"=>"Mac", "version"=>"6.1", "app"=>"/Users/app/path/rufus.app", "use_physical" => false}
300
- YAML.should_receive(:load).and_return(@config)
301
- @driver = Rufus::Driver.new
302
- end
303
-
304
- it 'can get the device orientation in landscape' do
305
- Rufus::Drivers::IOS_Simulator.should_receive(:for).with(@config, url).and_return(mock_driver)
306
- mock_driver.should_receive(:orientation).and_return(:landscape)
307
- @driver.orientation.should eq('landscape')
308
- end
309
-
310
- it 'can set the device orientation to portrait' do
311
-
312
- Rufus::Drivers::IOS_Simulator.should_receive(:for).with(@config, url).and_return(mock_driver)
313
- mock_driver.should_receive(:rotate).with('portrait')
314
- @driver.rotate('portrait')
315
- end
316
- end
317
- end
318
-
319
- context 'getting the page data' do
320
-
321
- let(:yaml){double('YAML loader')}
322
- let(:mock_driver){'a mock app driver'}
323
- let(:url){'http://127.0.0.1:4723/wd/hub'}
324
-
325
- before(:each) do
326
- File.stub(:exists?).and_return(true)
327
- @config = {"browser_name" =>"iOS", "platform"=>"Mac", "version"=>"6.1", "app"=>"/Users/app/path/rufus.app", "use_physical" => false}
328
- YAML.should_receive(:load).and_return(@config)
329
- @driver = Rufus::Driver.new
330
- end
331
-
332
- it 'can get all the page data' do
333
-
334
- Rufus::Drivers::IOS_Simulator.should_receive(:for).with(@config, url).and_return(mock_driver)
335
- mock_driver.should_receive(:page_source).and_return("some page data")
336
- @driver.page_source.should eq("some page data")
337
- end
338
-
339
- it 'can take a screenshot of the page' do
340
- Rufus::Drivers::IOS_Simulator.should_receive(:for).with(@config, url).and_return(mock_driver)
341
- mock_driver.should_receive(:save_screenshot).with('theShot.png')
342
- @driver.screenshot 'theShot.png'
343
- end
344
-
345
- context 'getting element lists by class' do
346
-
347
- let(:mock_list){'a mock list of elements'}
348
-
349
- before(:each) do
350
- Rufus::Drivers::IOS_Simulator.should_receive(:for).with(@config, url).and_return(mock_driver)
351
- end
352
-
353
- it 'can get all the buttons' do
354
- mock_driver.should_receive(:find_elements).with(:tag_name, 'UIAButton').and_return(mock_list)
355
- @driver.elements_by_tag('UIAButton').should eq(mock_list)
356
- end
357
- end
358
- end
359
- context 'scrolling' do
360
-
361
- let(:yaml){double('YAML loader')}
362
- let(:mock_driver){'a mock app driver'}
363
- let(:url){'http://127.0.0.1:4723/wd/hub'}
364
- let(:mock_element){'mock selenium element'}
365
- let(:swipe_options){{'element' => 1}}
366
- before(:each) do
367
- File.stub(:exists?).and_return(true)
368
- @config = {"browser_name" =>"iOS", "platform"=>"Mac", "version"=>"6.1", "app"=>"/Users/app/path/rufus.app", "use_physical" => false}
369
- YAML.should_receive(:load).and_return(@config)
370
- @driver = Rufus::Driver.new
371
- end
372
-
373
- it 'can scroll to a view' do
374
- Rufus::Drivers::IOS_Simulator.should_receive(:for).with(@config, url).and_return(mock_driver)
375
- mock_driver.should_receive(:find_element).with(:name, 'elementName').and_return(mock_element)
376
- mock_element.should_receive(:ref).and_return(1)
377
- mock_driver.should_receive(:execute_script).with('mobile: scrollTo', swipe_options)
378
- @driver.scroll_to(:name => 'elementName')
379
- end
380
- end
381
-
382
- context 'finding child elements of table view' do
383
-
384
- let(:yaml){double('YAML loader')}
385
- let(:mock_driver){'a mock app driver'}
386
- let(:url){'http://127.0.0.1:4723/wd/hub'}
387
- let(:mock_element){'mock selenium element'}
388
- let(:children){'mock tableview children'}
389
-
390
- before(:each) do
391
- File.stub(:exists?).and_return(true)
392
- @config = {"browser_name" =>"iOS", "platform"=>"Mac", "version"=>"6.1", "app"=>"/Users/app/path/rufus.app", "use_physical" => false}
393
- YAML.should_receive(:load).and_return(@config)
394
- @driver = Rufus::Driver.new
395
- Rufus::Drivers::IOS_Simulator.should_receive(:for).with(@config, url).and_return(mock_driver)
396
- mock_driver.should_receive(:find_element).with(:name, 'elementName').and_return(mock_element)
397
- end
398
-
399
- it 'returns no elements if element is not table view' do
400
- mock_element.should_receive(:tag_name).and_return('UIStaticText')
401
- expect{@driver.cells(:name => 'elementName')}.to raise_error(RuntimeError, 'Expected view to be of type UIATableView')
402
- end
403
-
404
- it 'can find a list of child elements' do
405
- mock_element.should_receive(:tag_name).and_return('UIATableView')
406
- mock_element.should_receive(:find_elements).with(:tag_name, 'UIATableCell').and_return(children)
407
- @driver.cells(:name => 'elementName').should == children
408
- end
409
- end
410
41
  end
411
42
  end
412
43
 
@@ -3,35 +3,93 @@ require 'rufus/drivers/iOS_device'
3
3
  require 'selenium-webdriver'
4
4
 
5
5
 
6
+
6
7
  describe Rufus::Drivers::IOS_Device do
7
8
 
8
9
  let(:config){ {"browser" =>"iOS", "platform"=>"Mac", "version"=>"6.1", "app"=>"/Users/app/path/rufus.app", "use_physical" => "true"}}
9
10
  let(:capabilities){{"browserName" =>"iOS", "platform"=>"Mac", "version"=>"6.1", "app"=>"/Users/app/path/rufus.app"}}
10
11
  let(:url){'http://127.0.0.1:4723/wd/hub'}
11
12
  let(:mock_driver){'mock selenium driver'}
13
+ let(:driver){Rufus::Drivers::IOS_Device.new(config)}
12
14
 
13
- context 'initializing driver for iOS device' do
14
- it 'can create a selenium driver for an iOS device' do
15
- Selenium::WebDriver.should_receive(:for).with(:remote, :desired_capabilities => capabilities, :url => 'http://127.0.0.1:4723/wd/hub')
16
- Rufus::Drivers::IOS_Device.for config, url
17
- end
15
+ before(:each) do
16
+ Selenium::WebDriver.should_receive(:for).with(:remote, :desired_capabilities => capabilities, :url => 'http://127.0.0.1:4723/wd/hub').and_return(mock_driver)
18
17
  end
19
-
20
18
  context 'getting the orientation' do
21
19
  it 'can get the current orientation' do
22
- Selenium::WebDriver.should_receive(:for).with(:remote, :desired_capabilities => capabilities, :url => 'http://127.0.0.1:4723/wd/hub').and_return(mock_driver)
23
20
  mock_driver.should_receive(:orientation).and_return(:landscape)
24
- driver = Rufus::Drivers::IOS_Device.for config, url
25
21
  driver.orientation
26
22
  end
27
23
  end
28
-
29
24
  context 'setting the orientation' do
30
25
  it 'can set a new orientation' do
31
- Selenium::WebDriver.should_receive(:for).with(:remote, :desired_capabilities => capabilities, :url => 'http://127.0.0.1:4723/wd/hub').and_return(mock_driver)
32
26
  mock_driver.should_receive(:rotate).with(:landscape)
33
- driver = Rufus::Drivers::IOS_Device.for config, url
27
+ driver = Rufus::Drivers::IOS_Device.new(config)
34
28
  driver.rotate :landscape
35
29
  end
36
30
  end
37
- end
31
+
32
+ context 'dealing with elements' do
33
+ let(:mock_elements){double('mock selenium driver elements list')}
34
+ let(:mock_element){double('mock selenium driver element')}
35
+
36
+ context 'finding elements' do
37
+ context 'existence' do
38
+ it 'can find out if its part of things' do
39
+ mock_driver.should_receive(:find_element).with(:name, 'rufusButton').and_return(mock_element)
40
+ mock_element.should_receive(:nil?).and_return(false)
41
+ driver.exists?(:name => 'rufusButton').should be_true
42
+ end
43
+ it 'can find out if it is not part of things' do
44
+ mock_driver.should_receive(:find_element).with(:name, 'rufusButton').and_return(mock_element)
45
+ mock_element.should_receive(:nil?).and_return(true)
46
+ driver.exists?(:name => 'rufusButton').should be_false
47
+ end
48
+ end
49
+ it 'can find an element by name' do
50
+ mock_driver.should_receive(:find_element).with(:name, 'rufusButton').and_return(mock_element)
51
+ driver.find({:name => 'rufusButton'}).should == mock_element
52
+ end
53
+ it 'can tell if an element does not exist' do
54
+ mock_driver.should_receive(:find_element).with(:name, 'rufusButton').and_raise(Selenium::WebDriver::Error::NoSuchElementError)
55
+ driver.find({:name => 'rufusButton'}).should be_nil
56
+ end
57
+ end
58
+ it 'can click on an element by name' do
59
+ mock_driver.should_receive(:find_element).with(:name, 'rufusButton').and_return(mock_element)
60
+ mock_element.should_receive(:click)
61
+ driver.click({:name =>'rufusButton'})
62
+ end
63
+ it 'can click a button by name only' do
64
+ mock_driver.should_receive(:find_element).with(:name, 'rufusButton').and_return(mock_element)
65
+ mock_element.should_receive(:click)
66
+ driver.press_button 'rufusButton'
67
+ end
68
+ it 'can tell if an element is enabled' do
69
+ mock_driver.should_receive(:find_element).with(:name, 'rufusButton').and_return(mock_element)
70
+ mock_element.should_receive(:enabled?).and_return(true)
71
+ driver.enabled?(:name => 'rufusButton').should be_true
72
+ end
73
+ it 'can tell if an element is displayed on screen' do
74
+ mock_driver.should_receive(:find_element).with(:name, 'rufusButton').and_return(mock_element)
75
+ mock_element.should_receive(:displayed?).and_return(true)
76
+ driver.displayed?(:name => 'rufusButton').should be_true
77
+ end
78
+ it 'can enter text into an element' do
79
+ mock_driver.should_receive(:find_element).with(:name, 'rufusButton').and_return(mock_element)
80
+ mock_element.should_receive(:click)
81
+ mock_element.should_receive(:send_keys).with('text')
82
+ driver.type('text', 'rufusButton')
83
+ end
84
+ it 'can get the text of an element' do
85
+ mock_driver.should_receive(:find_element).with(:name, 'rufusLabel').and_return(mock_element)
86
+ mock_element.should_receive(:text)
87
+ driver.text(:name => 'rufusLabel')
88
+ end
89
+ it 'can get the class of an element' do
90
+ mock_driver.should_receive(:find_element).with(:name, 'rufusLabel').and_return(mock_element)
91
+ mock_element.should_receive(:tag_name)
92
+ driver.class(:name => 'rufusLabel')
93
+ end
94
+ end
95
+ end