page-object 1.1.1 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/ChangeLog +9 -0
- data/Gemfile +1 -0
- data/features/section.feature +4 -0
- data/features/step_definitions/section_steps.rb +10 -1
- data/lib/page-object.rb +16 -8
- data/lib/page-object/accessors.rb +2 -2
- data/lib/page-object/elements/button.rb +0 -7
- data/lib/page-object/elements/canvas.rb +1 -13
- data/lib/page-object/elements/check_box.rb +0 -12
- data/lib/page-object/elements/element.rb +52 -9
- data/lib/page-object/elements/file_field.rb +0 -12
- data/lib/page-object/elements/form.rb +0 -12
- data/lib/page-object/elements/image.rb +0 -12
- data/lib/page-object/elements/link.rb +0 -12
- data/lib/page-object/elements/ordered_list.rb +0 -13
- data/lib/page-object/elements/radio_button.rb +0 -12
- data/lib/page-object/elements/select_list.rb +0 -13
- data/lib/page-object/elements/table.rb +0 -13
- data/lib/page-object/elements/table_row.rb +0 -13
- data/lib/page-object/elements/text_area.rb +0 -14
- data/lib/page-object/elements/text_field.rb +0 -12
- data/lib/page-object/elements/unordered_list.rb +0 -12
- data/lib/page-object/elements/video.rb +0 -10
- data/lib/page-object/platforms/selenium_webdriver/element.rb +1 -1
- data/lib/page-object/platforms/selenium_webdriver/page_object.rb +26 -5
- data/lib/page-object/platforms/selenium_webdriver/select_list.rb +1 -1
- data/lib/page-object/platforms/selenium_webdriver/table.rb +1 -1
- data/lib/page-object/platforms/selenium_webdriver/table_row.rb +1 -1
- data/lib/page-object/platforms/watir_webdriver/element.rb +9 -2
- data/lib/page-object/platforms/watir_webdriver/ordered_list.rb +1 -1
- data/lib/page-object/platforms/watir_webdriver/page_object.rb +25 -4
- data/lib/page-object/platforms/watir_webdriver/select_list.rb +1 -1
- data/lib/page-object/platforms/watir_webdriver/table.rb +1 -1
- data/lib/page-object/platforms/watir_webdriver/table_row.rb +1 -1
- data/lib/page-object/platforms/watir_webdriver/unordered_list.rb +1 -1
- data/lib/page-object/section_collection.rb +16 -0
- data/lib/page-object/version.rb +1 -1
- data/lib/page-object/widgets.rb +14 -36
- data/spec/page-object/elements/canvas_spec.rb +3 -2
- data/spec/page-object/elements/ordered_list_spec.rb +2 -2
- data/spec/page-object/elements/select_list_spec.rb +2 -2
- data/spec/page-object/elements/unordered_list_spec.rb +2 -2
- data/spec/page-object/elements/video_spec.rb +12 -6
- data/spec/page-object/page-object_spec.rb +51 -23
- data/spec/page-object/page_section_spec.rb +9 -2
- data/spec/page-object/watir_accessors_spec.rb +1 -0
- metadata +4 -4
- data/lib/page-object/sections.rb +0 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 441fe4c75e361d33bb3938c23b47d55701f83074
|
4
|
+
data.tar.gz: 81d70fd600660240c761665482abed0eabde01bc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 312e009090468c99cde07ab1bdf51082018952303849f902846cfdf96c9cac8364fbb601d2f1d8db164bf54d326277aa0163c130f3dcedce1bc6b87929e7cb92
|
7
|
+
data.tar.gz: ee8d3bcd265dfc90ecef27c3473a2010afeafb14a7c44907fcbac8165a3ec1dadaa2ba82a2e56270005ed9dfb4224c26a15c9a6de2095182a63d9a52927e050a
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.1
|
1
|
+
ruby-2.3.1
|
data/ChangeLog
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
Version 1.2.0 / 2016-6-15
|
2
|
+
* Enhancements
|
3
|
+
* Added array methods to section collections (Thanks Cohen Carlisle)
|
4
|
+
* Ensuring that method_missing is always forwarded to the root element (Thanks Cohen Carlisle)
|
5
|
+
* Added ability to call style method with no parameters (Thanks Justin Watts)
|
6
|
+
- with Watir will return all styles; with Selenium will return empty string
|
7
|
+
* Cleaned up frame and iframe nesting (Thanks Jon Snow)
|
8
|
+
* Support for adding other platforms (Thanks pvmeerbe)
|
9
|
+
|
1
10
|
=== Version 1.1.1 / 2016-1-7
|
2
11
|
* Enhancements
|
3
12
|
* Added row accessor method and support for finding row elements directly (Thanks Ethan Hedrick)
|
data/Gemfile
CHANGED
@@ -7,6 +7,7 @@ gem 'fuubar-cucumber', '>= 0.0.22'
|
|
7
7
|
gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i
|
8
8
|
gem 'growl'
|
9
9
|
gem 'guard-rspec'
|
10
|
+
gem 'listen', '3.0.8' #Last version that supports ruby 2.0
|
10
11
|
gem 'guard-cucumber'
|
11
12
|
gem 'net-http-persistent'
|
12
13
|
gem 'coveralls', require: false
|
data/features/section.feature
CHANGED
@@ -116,6 +116,10 @@ Feature: Sections
|
|
116
116
|
Given I search for a link in an indexed property located in a section
|
117
117
|
Then I should see the text "Success" in the section indexed link
|
118
118
|
|
119
|
+
Scenario: Sections roots can be accessed
|
120
|
+
When I have a page section
|
121
|
+
Then methods called on the section are passed to the root if missing
|
122
|
+
|
119
123
|
Scenario: Selecting multiple sections
|
120
124
|
When I select multiple sections
|
121
125
|
Then I should have a section collection containing the sections
|
@@ -265,4 +265,13 @@ end
|
|
265
265
|
|
266
266
|
Given(/^I search for a link in an indexed property located in a section$/) do
|
267
267
|
@link = @page.container.indexed_list['success'].indexed_link_element
|
268
|
-
end
|
268
|
+
end
|
269
|
+
|
270
|
+
When(/^I have a page section$/) do
|
271
|
+
@section = @page.container
|
272
|
+
end
|
273
|
+
|
274
|
+
Then(/^methods called on the section are passed to the root if missing$/) do
|
275
|
+
expect(-> { @section.visible? }).not_to raise_error
|
276
|
+
expect(@section.visible?).to be true
|
277
|
+
end
|
data/lib/page-object.rb
CHANGED
@@ -7,7 +7,7 @@ require 'page-object/page_factory'
|
|
7
7
|
require 'page-object/page_populator'
|
8
8
|
require 'page-object/javascript_framework_facade'
|
9
9
|
require 'page-object/indexed_properties'
|
10
|
-
require 'page-object/
|
10
|
+
require 'page-object/section_collection'
|
11
11
|
require 'page-object/widgets'
|
12
12
|
|
13
13
|
require 'watir-webdriver'
|
@@ -26,7 +26,7 @@ require 'selenium/webdriver/common/error'
|
|
26
26
|
# button we might define our page like the one below. We can then interact with
|
27
27
|
# the object using the generated methods.
|
28
28
|
#
|
29
|
-
# @example Login page example
|
29
|
+
# @example Login page example
|
30
30
|
# class LoginPage
|
31
31
|
# include PageObject
|
32
32
|
#
|
@@ -49,10 +49,18 @@ module PageObject
|
|
49
49
|
include LoadsPlatform
|
50
50
|
include ElementLocators
|
51
51
|
include PagePopulator
|
52
|
-
extend Forwardable
|
53
52
|
|
54
|
-
|
55
|
-
|
53
|
+
def method_missing(method, *args, &block)
|
54
|
+
if @root_element && @root_element.respond_to?(method)
|
55
|
+
@root_element.send(method, *args, &block)
|
56
|
+
else
|
57
|
+
super
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def respond_to_missing?(method, include_all = false)
|
62
|
+
@root_element && @root_element.respond_to?(method) || super
|
63
|
+
end
|
56
64
|
|
57
65
|
# @return [Watir::Browser or Selenium::WebDriver::Driver] the platform browser passed to the constructor
|
58
66
|
attr_reader :browser
|
@@ -61,7 +69,7 @@ module PageObject
|
|
61
69
|
|
62
70
|
#
|
63
71
|
# Construct a new page object. Prior to browser initialization it will call
|
64
|
-
# a method named initialize_accessors if it exists. Upon initialization of
|
72
|
+
# a method named initialize_accessors if it exists. Upon initialization of
|
65
73
|
# the page it will call a method named initialize_page if it exists.
|
66
74
|
#
|
67
75
|
# @param [Watir::Browser, Watir::HTMLElement or Selenium::WebDriver::Driver, Selenium::WebDriver::Element] the platform browser/element to use
|
@@ -269,7 +277,7 @@ module PageObject
|
|
269
277
|
#
|
270
278
|
def execute_script(script, *args)
|
271
279
|
args.map! { |e| e.kind_of?(PageObject::Elements::Element) ? e.element : e }
|
272
|
-
platform.execute_script(script, *args)
|
280
|
+
platform.execute_script(script, *args)
|
273
281
|
end
|
274
282
|
|
275
283
|
#
|
@@ -313,7 +321,7 @@ module PageObject
|
|
313
321
|
#
|
314
322
|
def in_iframe(identifier, frame=nil, &block)
|
315
323
|
platform.in_iframe(identifier, frame, &block)
|
316
|
-
end
|
324
|
+
end
|
317
325
|
|
318
326
|
#
|
319
327
|
# Override the normal showModalDialog call is it opens a window instead
|
@@ -153,7 +153,7 @@ module PageObject
|
|
153
153
|
# @param block that contains the calls to elements that exist inside the frame.
|
154
154
|
#
|
155
155
|
def in_frame(identifier, frame=nil, &block)
|
156
|
-
frame = []
|
156
|
+
frame = frame.nil? ? [] : frame.dup
|
157
157
|
frame << {frame: identifier}
|
158
158
|
block.call(frame)
|
159
159
|
end
|
@@ -177,7 +177,7 @@ module PageObject
|
|
177
177
|
# @param block that contains the calls to elements that exist inside the iframe.
|
178
178
|
#
|
179
179
|
def in_iframe(identifier, frame=nil, &block)
|
180
|
-
frame = []
|
180
|
+
frame = frame.nil? ? [] : frame.dup
|
181
181
|
frame << {iframe: identifier}
|
182
182
|
block.call(frame)
|
183
183
|
end
|
@@ -18,13 +18,6 @@ module PageObject
|
|
18
18
|
super + [:value, :src, :alt]
|
19
19
|
end
|
20
20
|
|
21
|
-
def include_platform_for platform
|
22
|
-
super
|
23
|
-
if platform[:platform] == :selenium_webdriver
|
24
|
-
require 'page-object/platforms/selenium_webdriver/button'
|
25
|
-
self.class.send :include, PageObject::Platforms::SeleniumWebDriver::Button
|
26
|
-
end
|
27
|
-
end
|
28
21
|
end
|
29
22
|
|
30
23
|
::PageObject::Elements.type_to_class[:submit] = ::PageObject::Elements::Button
|
@@ -2,20 +2,8 @@
|
|
2
2
|
module PageObject
|
3
3
|
module Elements
|
4
4
|
class Canvas < Element
|
5
|
-
#
|
6
|
-
# return the width of the canvas
|
7
|
-
#
|
8
|
-
def width
|
9
|
-
attribute(:width).to_i
|
10
|
-
end
|
11
5
|
|
12
|
-
|
13
|
-
# return the height of the canvas
|
14
|
-
#
|
15
|
-
def height
|
16
|
-
attribute(:height).to_i
|
17
|
-
end
|
18
|
-
|
6
|
+
|
19
7
|
end
|
20
8
|
::PageObject::Elements.type_to_class[:canvas] = ::PageObject::Elements::Canvas
|
21
9
|
end
|
@@ -17,18 +17,6 @@ module PageObject
|
|
17
17
|
super + [:value, :label, :css]
|
18
18
|
end
|
19
19
|
|
20
|
-
def include_platform_for platform
|
21
|
-
super
|
22
|
-
if platform[:platform] == :watir_webdriver
|
23
|
-
require 'page-object/platforms/watir_webdriver/check_box'
|
24
|
-
self.class.send :include, PageObject::Platforms::WatirWebDriver::CheckBox
|
25
|
-
elsif platform[:platform] == :selenium_webdriver
|
26
|
-
require 'page-object/platforms/selenium_webdriver/check_box'
|
27
|
-
self.class.send :include, PageObject::Platforms::SeleniumWebDriver::CheckBox
|
28
|
-
else
|
29
|
-
raise ArgumentError, "expect platform to be :watir_webdriver or :selenium_webdriver"
|
30
|
-
end
|
31
|
-
end
|
32
20
|
end
|
33
21
|
|
34
22
|
::PageObject::Elements.type_to_class[:checkbox] = ::PageObject::Elements::CheckBox
|
@@ -44,7 +44,7 @@ module PageObject
|
|
44
44
|
#
|
45
45
|
# get the value of the given CSS property
|
46
46
|
#
|
47
|
-
def style(property)
|
47
|
+
def style(property = nil)
|
48
48
|
element.style property
|
49
49
|
end
|
50
50
|
|
@@ -207,20 +207,63 @@ module PageObject
|
|
207
207
|
end
|
208
208
|
|
209
209
|
def include_platform_for platform
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
210
|
+
platform_information = PageObject::Platforms.get
|
211
|
+
raise ArgumentError,"Expected hash with at least a key :platform for platform information! (#{platform.inspect})" unless platform.class == Hash && platform.has_key?(:platform)
|
212
|
+
platform_name = platform[:platform]
|
213
|
+
|
214
|
+
raise ArgumentError, "Unknown platform #{platform_name}! Expect platform to be one of the following: #{platform_information.keys.inspect}" unless platform_information.keys.include?(platform_name)
|
215
|
+
base_platform_class = "#{platform_information[platform_name]}::"
|
216
|
+
|
217
|
+
self.send :extend, constantize_classname(base_platform_class + "Element")
|
218
|
+
@platform = constantize_classname(base_platform_class+ "PageObject").new(@element)
|
219
|
+
|
220
|
+
# include class specific code
|
221
|
+
class_to_include = case
|
222
|
+
when self.class == PageObject::Elements::Element
|
223
|
+
# already loaded
|
224
|
+
return true
|
225
|
+
when self.class.name =~/PageObject:Elements::/
|
226
|
+
self.class
|
227
|
+
# inherited classes for example the widgets
|
228
|
+
else
|
229
|
+
parent_classes = self.class.ancestors.select { |item| item.name =~/PageObject::Elements::/ }
|
230
|
+
raise RuntimeError,"Could not identify page-object inherited class for #{self.class}!" if parent_classes.empty?
|
231
|
+
parent_classes.first
|
232
|
+
end
|
233
|
+
|
234
|
+
element_type_specific_code = File.expand_path(File.dirname(__FILE__) + "../../platforms/#{platform_name}/"+ get_element_type_underscored(class_to_include) )
|
235
|
+
if File.exist? element_type_specific_code + '.rb'
|
236
|
+
require element_type_specific_code
|
237
|
+
self.send :extend, constantize_classname( base_platform_class + get_element_type(class_to_include) )
|
218
238
|
end
|
239
|
+
|
219
240
|
end
|
220
241
|
|
221
242
|
def to_ary
|
222
243
|
nil
|
223
244
|
end
|
245
|
+
|
246
|
+
private
|
247
|
+
|
248
|
+
|
249
|
+
def constantize_classname name
|
250
|
+
name.split("::").inject(Object) { |k,n| k.const_get(n) }
|
251
|
+
end
|
252
|
+
|
253
|
+
|
254
|
+
def get_element_type(class_name = self.class)
|
255
|
+
class_name.name.split('::').last
|
256
|
+
end
|
257
|
+
|
258
|
+
# retrieved from ruby on rails underscore method
|
259
|
+
def get_element_type_underscored(class_name = self.class)
|
260
|
+
get_element_type(class_name).to_s.gsub(/::/, '/').
|
261
|
+
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
|
262
|
+
gsub(/([a-z\d])([A-Z])/,'\1_\2').
|
263
|
+
tr("-", "_").
|
264
|
+
downcase
|
265
|
+
end
|
266
|
+
|
224
267
|
end
|
225
268
|
end
|
226
269
|
end
|
@@ -18,18 +18,6 @@ module PageObject
|
|
18
18
|
super + [:title, :label]
|
19
19
|
end
|
20
20
|
|
21
|
-
def include_platform_for platform
|
22
|
-
super
|
23
|
-
if platform[:platform] == :watir_webdriver
|
24
|
-
require 'page-object/platforms/watir_webdriver/file_field'
|
25
|
-
self.class.send :include, PageObject::Platforms::WatirWebDriver::FileField
|
26
|
-
elsif platform[:platform] == :selenium_webdriver
|
27
|
-
require 'page-object/platforms/selenium_webdriver/file_field'
|
28
|
-
self.class.send :include, PageObject::Platforms::SeleniumWebDriver::FileField
|
29
|
-
else
|
30
|
-
raise ArgumentError, "expect platform to be :watir_webdriver or :selenium_webdriver"
|
31
|
-
end
|
32
|
-
end
|
33
21
|
end
|
34
22
|
|
35
23
|
::PageObject::Elements.type_to_class[:file] = ::PageObject::Elements::FileField
|
@@ -17,18 +17,6 @@ module PageObject
|
|
17
17
|
super + [:action]
|
18
18
|
end
|
19
19
|
|
20
|
-
def include_platform_for platform
|
21
|
-
super
|
22
|
-
if platform[:platform] == :watir_webdriver
|
23
|
-
require 'page-object/platforms/watir_webdriver/form'
|
24
|
-
self.class.send :include, PageObject::Platforms::WatirWebDriver::Form
|
25
|
-
elsif platform[:platform] == :selenium_webdriver
|
26
|
-
require 'page-object/platforms/selenium_webdriver/form'
|
27
|
-
self.class.send :include, PageObject::Platforms::SeleniumWebDriver::Form
|
28
|
-
else
|
29
|
-
raise ArgumentError, "expect platform to be :watir_webdriver or :selenium_webdriver"
|
30
|
-
end
|
31
|
-
end
|
32
20
|
end
|
33
21
|
|
34
22
|
::PageObject::Elements.tag_to_class[:form] = ::PageObject::Elements::Form
|
@@ -16,18 +16,6 @@ module PageObject
|
|
16
16
|
super + [:alt, :src, :css]
|
17
17
|
end
|
18
18
|
|
19
|
-
def include_platform_for platform
|
20
|
-
super
|
21
|
-
if platform[:platform] == :watir_webdriver
|
22
|
-
require 'page-object/platforms/watir_webdriver/image'
|
23
|
-
self.class.send :include, PageObject::Platforms::WatirWebDriver::Image
|
24
|
-
elsif platform[:platform] == :selenium_webdriver
|
25
|
-
require 'page-object/platforms/selenium_webdriver/image'
|
26
|
-
self.class.send :include, PageObject::Platforms::SeleniumWebDriver::Image
|
27
|
-
else
|
28
|
-
raise ArgumentError, "expect platform to be :watir_webdriver or :selenium_webdriver"
|
29
|
-
end
|
30
|
-
end
|
31
19
|
end
|
32
20
|
|
33
21
|
::PageObject::Elements.tag_to_class[:img] = ::PageObject::Elements::Image
|
@@ -26,18 +26,6 @@ module PageObject
|
|
26
26
|
super.merge(:text => :link_text)
|
27
27
|
end
|
28
28
|
|
29
|
-
def include_platform_for platform
|
30
|
-
super
|
31
|
-
if platform[:platform] == :watir_webdriver
|
32
|
-
require 'page-object/platforms/watir_webdriver/link'
|
33
|
-
self.class.send :include, PageObject::Platforms::WatirWebDriver::Link
|
34
|
-
elsif platform[:platform] == :selenium_webdriver
|
35
|
-
require 'page-object/platforms/selenium_webdriver/link'
|
36
|
-
self.class.send :include, PageObject::Platforms::SeleniumWebDriver::Link
|
37
|
-
else
|
38
|
-
raise ArgumentError, "expect platform to be :watir_webdriver or :selenium_webdriver"
|
39
|
-
end
|
40
|
-
end
|
41
29
|
end
|
42
30
|
|
43
31
|
::PageObject::Elements.tag_to_class[:a] = ::PageObject::Elements::Link
|
@@ -30,19 +30,6 @@ module PageObject
|
|
30
30
|
[:class, :id, :index, :xpath]
|
31
31
|
end
|
32
32
|
|
33
|
-
def include_platform_for platform
|
34
|
-
super
|
35
|
-
if platform[:platform] == :watir_webdriver
|
36
|
-
require 'page-object/platforms/watir_webdriver/ordered_list'
|
37
|
-
self.class.send :include, PageObject::Platforms::WatirWebDriver::OrderedList
|
38
|
-
elsif platform[:platform] == :selenium_webdriver
|
39
|
-
require 'page-object/platforms/selenium_webdriver/ordered_list'
|
40
|
-
self.class.send :include, PageObject::Platforms::SeleniumWebDriver::OrderedList
|
41
|
-
else
|
42
|
-
raise ArgumentError, "expect platform to be :watir_webdriver or :selenium_webdriver"
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
33
|
end
|
47
34
|
|
48
35
|
::PageObject::Elements.tag_to_class[:ol] = ::PageObject::Elements::OrderedList
|
@@ -18,18 +18,6 @@ module PageObject
|
|
18
18
|
super + [:value, :label]
|
19
19
|
end
|
20
20
|
|
21
|
-
def include_platform_for platform
|
22
|
-
super
|
23
|
-
if platform[:platform] == :watir_webdriver
|
24
|
-
require 'page-object/platforms/watir_webdriver/radio_button'
|
25
|
-
self.class.send :include, PageObject::Platforms::WatirWebDriver::RadioButton
|
26
|
-
elsif platform[:platform] == :selenium_webdriver
|
27
|
-
require 'page-object/platforms/selenium_webdriver/radio_button'
|
28
|
-
self.class.send :include, PageObject::Platforms::SeleniumWebDriver::RadioButton
|
29
|
-
else
|
30
|
-
raise ArgumentError, "expect platform to be :watir_webdriver or :selenium_webdriver"
|
31
|
-
end
|
32
|
-
end
|
33
21
|
end
|
34
22
|
|
35
23
|
::PageObject::Elements.type_to_class[:radio] = ::PageObject::Elements::RadioButton
|
@@ -22,19 +22,6 @@ module PageObject
|
|
22
22
|
super + [:label]
|
23
23
|
end
|
24
24
|
|
25
|
-
def include_platform_for platform
|
26
|
-
super
|
27
|
-
if platform[:platform] == :watir_webdriver
|
28
|
-
require 'page-object/platforms/watir_webdriver/select_list'
|
29
|
-
self.class.send :include, PageObject::Platforms::WatirWebDriver::SelectList
|
30
|
-
elsif platform[:platform] == :selenium_webdriver
|
31
|
-
require 'page-object/platforms/selenium_webdriver/select_list'
|
32
|
-
self.class.send :include, PageObject::Platforms::SeleniumWebDriver::SelectList
|
33
|
-
else
|
34
|
-
raise ArgumentError, "expect platform to be :watir_webdriver or :selenium_webdriver"
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
25
|
end
|
39
26
|
|
40
27
|
::PageObject::Elements.tag_to_class[:select] = ::PageObject::Elements::SelectList
|
@@ -59,19 +59,6 @@ module PageObject
|
|
59
59
|
::PageObject::Elements::TableRow.new(row_element, platform)
|
60
60
|
end
|
61
61
|
|
62
|
-
|
63
|
-
def include_platform_for platform
|
64
|
-
super
|
65
|
-
if platform[:platform] == :watir_webdriver
|
66
|
-
require 'page-object/platforms/watir_webdriver/table'
|
67
|
-
self.class.send :include, PageObject::Platforms::WatirWebDriver::Table
|
68
|
-
elsif platform[:platform] == :selenium_webdriver
|
69
|
-
require 'page-object/platforms/selenium_webdriver/table'
|
70
|
-
self.class.send :include, PageObject::Platforms::SeleniumWebDriver::Table
|
71
|
-
else
|
72
|
-
raise ArgumentError, "expect platform to be :watir_webdriver or :selenium_webdriver"
|
73
|
-
end
|
74
|
-
end
|
75
62
|
end
|
76
63
|
|
77
64
|
::PageObject::Elements.tag_to_class[:table] = ::PageObject::Elements::Table
|