centric_page_object 2.3.1
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.
- checksums.yaml +7 -0
- data/.coveralls.yml +1 -0
- data/.gitignore +8 -0
- data/.rspec +2 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +17 -0
- data/ChangeLog +931 -0
- data/Gemfile +12 -0
- data/Guardfile +20 -0
- data/LICENSE +20 -0
- data/README.md +114 -0
- data/Rakefile +29 -0
- data/centric_page_object.gemspec +31 -0
- data/cucumber.yml +8 -0
- data/lib/page-object/accessors.rb +1201 -0
- data/lib/page-object/element_locators.rb +21 -0
- data/lib/page-object/elements/area.rb +9 -0
- data/lib/page-object/elements/audio.rb +9 -0
- data/lib/page-object/elements/bold.rb +9 -0
- data/lib/page-object/elements/button.rb +12 -0
- data/lib/page-object/elements/canvas.rb +10 -0
- data/lib/page-object/elements/check_box.rb +9 -0
- data/lib/page-object/elements/date_field.rb +10 -0
- data/lib/page-object/elements/div.rb +9 -0
- data/lib/page-object/elements/element.rb +212 -0
- data/lib/page-object/elements/file_field.rb +9 -0
- data/lib/page-object/elements/form.rb +9 -0
- data/lib/page-object/elements/heading.rb +14 -0
- data/lib/page-object/elements/hidden_field.rb +9 -0
- data/lib/page-object/elements/image.rb +10 -0
- data/lib/page-object/elements/italic.rb +9 -0
- data/lib/page-object/elements/label.rb +9 -0
- data/lib/page-object/elements/link.rb +9 -0
- data/lib/page-object/elements/list_item.rb +9 -0
- data/lib/page-object/elements/media.rb +11 -0
- data/lib/page-object/elements/option.rb +9 -0
- data/lib/page-object/elements/ordered_list.rb +43 -0
- data/lib/page-object/elements/paragraph.rb +9 -0
- data/lib/page-object/elements/radio_button.rb +9 -0
- data/lib/page-object/elements/select_list.rb +42 -0
- data/lib/page-object/elements/span.rb +9 -0
- data/lib/page-object/elements/table.rb +85 -0
- data/lib/page-object/elements/table_cell.rb +10 -0
- data/lib/page-object/elements/table_row.rb +52 -0
- data/lib/page-object/elements/text_area.rb +9 -0
- data/lib/page-object/elements/text_field.rb +10 -0
- data/lib/page-object/elements/unordered_list.rb +42 -0
- data/lib/page-object/elements/video.rb +9 -0
- data/lib/page-object/elements.rb +62 -0
- data/lib/page-object/indexed_properties.rb +41 -0
- data/lib/page-object/javascript/angularjs.rb +14 -0
- data/lib/page-object/javascript/jquery.rb +14 -0
- data/lib/page-object/javascript/prototype.rb +14 -0
- data/lib/page-object/javascript/yui.rb +19 -0
- data/lib/page-object/javascript_framework_facade.rb +80 -0
- data/lib/page-object/locator_generator.rb +183 -0
- data/lib/page-object/nested_elements.rb +17 -0
- data/lib/page-object/page_factory.rb +108 -0
- data/lib/page-object/page_populator.rb +105 -0
- data/lib/page-object/platforms/watir/page_object.rb +1155 -0
- data/lib/page-object/platforms/watir.rb +50 -0
- data/lib/page-object/section_collection.rb +16 -0
- data/lib/page-object/version.rb +4 -0
- data/lib/page-object/widgets.rb +98 -0
- data/lib/page-object.rb +431 -0
- data/pageobject.gems +1 -0
- metadata +239 -0
@@ -0,0 +1,105 @@
|
|
1
|
+
module PageObject
|
2
|
+
module PagePopulator
|
3
|
+
|
4
|
+
#
|
5
|
+
# This method will populate all matched page TextFields,
|
6
|
+
# TextAreas, SelectLists, FileFields, Checkboxes, and Radio Buttons from the
|
7
|
+
# Hash passed as an argument. The way it find an element is by
|
8
|
+
# matching the Hash key to the name you provided when declaring
|
9
|
+
# the element on your page.
|
10
|
+
#
|
11
|
+
# Checkbox and Radio Button values must be true or false.
|
12
|
+
#
|
13
|
+
# @example
|
14
|
+
# class ExamplePage
|
15
|
+
# include PageObject
|
16
|
+
#
|
17
|
+
# text_field(:username, :id => 'username_id')
|
18
|
+
# checkbox(:active, :id => 'active_id')
|
19
|
+
# end
|
20
|
+
#
|
21
|
+
# ...
|
22
|
+
#
|
23
|
+
# @browser = Watir::Browser.new :firefox
|
24
|
+
# example_page = ExamplePage.new(@browser)
|
25
|
+
# example_page.populate_page_with :username => 'a name', :active => true
|
26
|
+
#
|
27
|
+
# @param data [Hash] the data to use to populate this page. The key
|
28
|
+
# can be either a string or a symbol. The value must be a string
|
29
|
+
# for TextField, TextArea, SelectList, and FileField and must be true or
|
30
|
+
# false for a Checkbox or RadioButton.
|
31
|
+
#
|
32
|
+
def populate_page_with(data)
|
33
|
+
data.to_h.each do |key, value|
|
34
|
+
populate_section(key, value) if value.respond_to?(:to_h)
|
35
|
+
populate_value(self, key, value)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def populate_section(section, data)
|
42
|
+
return unless self.respond_to? section
|
43
|
+
data.to_h.each do |key, value|
|
44
|
+
populate_value(self.send(section), key, value)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def populate_value(receiver, key, value)
|
49
|
+
populate_checkbox(receiver, key, value) if is_checkbox?(receiver, key) and is_enabled?(receiver, key)
|
50
|
+
populate_radiobuttongroup(receiver, key, value) if is_radiobuttongroup?(receiver, key)
|
51
|
+
populate_radiobutton(receiver, key, value) if is_radiobutton?(receiver, key) and is_enabled?(receiver, key)
|
52
|
+
populate_select_list(receiver, key, value) if is_select_list?(receiver, key)
|
53
|
+
populate_text(receiver, key, value) if is_text?(receiver, key) and is_enabled?(receiver, key)
|
54
|
+
end
|
55
|
+
|
56
|
+
def populate_text(receiver, key, value)
|
57
|
+
receiver.send "#{key}=", value
|
58
|
+
end
|
59
|
+
|
60
|
+
def populate_checkbox(receiver, key, value)
|
61
|
+
return receiver.send "check_#{key}" if value
|
62
|
+
receiver.send "uncheck_#{key}"
|
63
|
+
end
|
64
|
+
|
65
|
+
def populate_radiobutton(receiver, key, value)
|
66
|
+
receiver.send "select_#{key}" if value
|
67
|
+
end
|
68
|
+
|
69
|
+
def populate_radiobuttongroup(receiver, key, value)
|
70
|
+
receiver.send("select_#{key}", value)
|
71
|
+
end
|
72
|
+
|
73
|
+
def populate_select_list(receiver, key, value)
|
74
|
+
receiver.send "#{key}=", value
|
75
|
+
end
|
76
|
+
|
77
|
+
def is_text?(receiver, key)
|
78
|
+
return false if is_select_list?(receiver, key)
|
79
|
+
receiver.respond_to?("#{key}=".to_sym)
|
80
|
+
end
|
81
|
+
|
82
|
+
def is_checkbox?(receiver, key)
|
83
|
+
receiver.respond_to?("check_#{key}".to_sym)
|
84
|
+
end
|
85
|
+
|
86
|
+
def is_radiobutton?(receiver, key)
|
87
|
+
receiver.respond_to?("select_#{key}".to_sym)
|
88
|
+
end
|
89
|
+
|
90
|
+
def is_radiobuttongroup?(receiver, key)
|
91
|
+
receiver.respond_to?("select_#{key}".to_sym) and receiver.respond_to?("#{key}_values")
|
92
|
+
end
|
93
|
+
|
94
|
+
def is_select_list?(receiver, key)
|
95
|
+
receiver.respond_to?("#{key}_options".to_sym)
|
96
|
+
end
|
97
|
+
|
98
|
+
def is_enabled?(receiver, key)
|
99
|
+
return false if is_radiobuttongroup?(receiver, key)
|
100
|
+
return true if (receiver.send "#{key}_element").tag_name == "textarea"
|
101
|
+
element = receiver.send("#{key}_element")
|
102
|
+
element.enabled? and element.present?
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|