page-object 2.2.2 → 2.3.0

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.
Files changed (67) hide show
  1. checksums.yaml +5 -5
  2. data/.coveralls.yml +1 -1
  3. data/.gitignore +8 -8
  4. data/.rspec +2 -2
  5. data/.ruby-gemset +1 -1
  6. data/.ruby-version +1 -1
  7. data/.travis.yml +17 -17
  8. data/ChangeLog +923 -888
  9. data/Gemfile +13 -13
  10. data/Guardfile +20 -20
  11. data/LICENSE +20 -20
  12. data/README.md +114 -114
  13. data/Rakefile +29 -29
  14. data/cucumber.yml +8 -8
  15. data/lib/page-object.rb +431 -420
  16. data/lib/page-object/accessors.rb +1201 -1175
  17. data/lib/page-object/element_locators.rb +21 -21
  18. data/lib/page-object/elements.rb +62 -61
  19. data/lib/page-object/elements/area.rb +9 -9
  20. data/lib/page-object/elements/audio.rb +9 -9
  21. data/lib/page-object/elements/bold.rb +9 -9
  22. data/lib/page-object/elements/button.rb +12 -12
  23. data/lib/page-object/elements/canvas.rb +10 -10
  24. data/lib/page-object/elements/check_box.rb +9 -9
  25. data/lib/page-object/elements/date_field.rb +10 -0
  26. data/lib/page-object/elements/div.rb +9 -9
  27. data/lib/page-object/elements/element.rb +212 -159
  28. data/lib/page-object/elements/file_field.rb +9 -9
  29. data/lib/page-object/elements/form.rb +9 -9
  30. data/lib/page-object/elements/heading.rb +14 -14
  31. data/lib/page-object/elements/hidden_field.rb +9 -9
  32. data/lib/page-object/elements/image.rb +10 -10
  33. data/lib/page-object/elements/italic.rb +9 -9
  34. data/lib/page-object/elements/label.rb +9 -9
  35. data/lib/page-object/elements/link.rb +9 -9
  36. data/lib/page-object/elements/list_item.rb +9 -9
  37. data/lib/page-object/elements/media.rb +11 -11
  38. data/lib/page-object/elements/option.rb +9 -9
  39. data/lib/page-object/elements/ordered_list.rb +43 -45
  40. data/lib/page-object/elements/paragraph.rb +9 -9
  41. data/lib/page-object/elements/radio_button.rb +9 -9
  42. data/lib/page-object/elements/select_list.rb +42 -42
  43. data/lib/page-object/elements/span.rb +9 -9
  44. data/lib/page-object/elements/table.rb +85 -68
  45. data/lib/page-object/elements/table_cell.rb +10 -10
  46. data/lib/page-object/elements/table_row.rb +52 -52
  47. data/lib/page-object/elements/text_area.rb +9 -9
  48. data/lib/page-object/elements/text_field.rb +10 -10
  49. data/lib/page-object/elements/unordered_list.rb +42 -44
  50. data/lib/page-object/elements/video.rb +9 -9
  51. data/lib/page-object/indexed_properties.rb +41 -41
  52. data/lib/page-object/javascript/angularjs.rb +14 -14
  53. data/lib/page-object/javascript/jquery.rb +14 -14
  54. data/lib/page-object/javascript/prototype.rb +14 -14
  55. data/lib/page-object/javascript/yui.rb +18 -18
  56. data/lib/page-object/javascript_framework_facade.rb +80 -80
  57. data/lib/page-object/locator_generator.rb +183 -182
  58. data/lib/page-object/nested_elements.rb +17 -17
  59. data/lib/page-object/page_factory.rb +108 -108
  60. data/lib/page-object/page_populator.rb +105 -95
  61. data/lib/page-object/platforms/watir.rb +50 -50
  62. data/lib/page-object/platforms/watir/page_object.rb +1155 -1124
  63. data/lib/page-object/section_collection.rb +16 -16
  64. data/lib/page-object/version.rb +4 -4
  65. data/lib/page-object/widgets.rb +98 -98
  66. data/page-object.gemspec +32 -32
  67. metadata +12 -12
@@ -1,9 +1,9 @@
1
- module PageObject
2
- module Elements
3
- class Span < Element
4
-
5
- end
6
-
7
- ::PageObject::Elements.tag_to_class[:span] = ::PageObject::Elements::Span
8
- end
9
- end
1
+ module PageObject
2
+ module Elements
3
+ class Span < Element
4
+
5
+ end
6
+
7
+ ::PageObject::Elements.tag_to_class[:span] = ::PageObject::Elements::Span
8
+ end
9
+ end
@@ -1,68 +1,85 @@
1
- module PageObject
2
- module Elements
3
- class Table < Element
4
- include Enumerable
5
-
6
- #
7
- # iterator that yields with a PageObject::Elements::TableRow
8
- #
9
- # @return [PageObject::Elements::TableRow]
10
- #
11
- def each(&block)
12
- row_items.each(&block)
13
- end
14
-
15
- alias_method :first_row, :first
16
-
17
- #
18
- # return the last row
19
- #
20
- # @return PageObject::Elements::TableRow
21
- #
22
- def last_row
23
- self[-1]
24
- end
25
-
26
- #
27
- # Return the PageObject::Elements::TableRow for the index provided. Index
28
- # is zero based. If the index provided is a String then it
29
- # will be matched with the text from any column. The text can be a substring of the full column text.
30
- #
31
- # @return [PageObject::Elements::TableRow]
32
- #
33
- def [](what)
34
- idx = find_index(what)
35
- idx && row_items[idx]
36
- end
37
-
38
- #
39
- # Returns the number of rows in the table.
40
- #
41
- def rows
42
- row_items.size
43
- end
44
-
45
- protected
46
-
47
- def row_items
48
- meth = strategy == :descendants ? :trs : :rows
49
- @row_items ||= element.send(meth).map do |obj|
50
- ::PageObject::Elements::TableRow.new(obj)
51
- end
52
- end
53
-
54
- def strategy
55
- :children
56
- end
57
-
58
- def find_index(what)
59
- return what if what.is_a? Integer
60
- row_items.find_index do |row|
61
- row.cell(text: /#{Regexp.escape(what)}/).exist?
62
- end
63
- end
64
- end
65
-
66
- ::PageObject::Elements.tag_to_class[:table] = ::PageObject::Elements::Table
67
- end
68
- end
1
+ module PageObject
2
+ module Elements
3
+ class Table < Element
4
+ include Enumerable
5
+
6
+ #
7
+ # iterator that yields with a PageObject::Elements::TableRow
8
+ #
9
+ # @return [PageObject::Elements::TableRow]
10
+ #
11
+ def each(&block)
12
+ row_items.each(&block)
13
+ end
14
+
15
+ alias_method :first_row, :first
16
+
17
+ #
18
+ # return the last row
19
+ #
20
+ # @return PageObject::Elements::TableRow
21
+ #
22
+ def last_row
23
+ self[-1]
24
+ end
25
+
26
+ #
27
+ # Return the PageObject::Elements::TableRow for the index provided. Index
28
+ # is zero based. If the index provided is a String then it
29
+ # will be matched with the text from any column. The text can be a substring of the full column text.
30
+ #
31
+ # @return [PageObject::Elements::TableRow]
32
+ #
33
+ def [](what)
34
+ idx = find_index(what)
35
+ idx && row_items[idx]
36
+ end
37
+
38
+ #
39
+ # Returns the number of rows in the table.
40
+ #
41
+ def rows
42
+ row_items.size
43
+ end
44
+
45
+ #
46
+ # Returns the Array of values(String) in a column for the index provided. Index
47
+ # is zero based. If the index provided is a String then it
48
+ # will be matched with the text from the header. The text can be a substring of the full header text.
49
+ #
50
+ def column_values(what)
51
+ idx = find_index_of_header(what)
52
+ idx && row_items.drop(1).collect { |row| row.cell(index: idx).text }
53
+ end
54
+
55
+ protected
56
+
57
+ def row_items
58
+ meth = strategy == :descendants ? :trs : :rows
59
+ @row_items ||= element.send(meth).map do |obj|
60
+ ::PageObject::Elements::TableRow.new(obj)
61
+ end
62
+ end
63
+
64
+ def strategy
65
+ :children
66
+ end
67
+
68
+ def find_index_of_header(what)
69
+ return what if what.is_a? Integer
70
+ row_items[0].cells.find_index do |cell|
71
+ cell.text.include? Regexp.escape(what)
72
+ end
73
+ end
74
+
75
+ def find_index(what)
76
+ return what if what.is_a? Integer
77
+ row_items.find_index do |row|
78
+ row.cell(text: /#{Regexp.escape(what)}/).exist?
79
+ end
80
+ end
81
+ end
82
+
83
+ ::PageObject::Elements.tag_to_class[:table] = ::PageObject::Elements::Table
84
+ end
85
+ end
@@ -1,10 +1,10 @@
1
- module PageObject
2
- module Elements
3
- class TableCell < Element
4
-
5
- end
6
-
7
- ::PageObject::Elements.tag_to_class[:td] = ::PageObject::Elements::TableCell
8
- ::PageObject::Elements.tag_to_class[:th] = ::PageObject::Elements::TableCell
9
- end
10
- end
1
+ module PageObject
2
+ module Elements
3
+ class TableCell < Element
4
+
5
+ end
6
+
7
+ ::PageObject::Elements.tag_to_class[:td] = ::PageObject::Elements::TableCell
8
+ ::PageObject::Elements.tag_to_class[:th] = ::PageObject::Elements::TableCell
9
+ end
10
+ end
@@ -1,52 +1,52 @@
1
- require 'watir/elements/html_elements'
2
-
3
- module PageObject
4
- module Elements
5
- class TableRow < Element
6
- include Enumerable
7
-
8
- #
9
- # iterator that yields with a PageObject::Elements::TableCell
10
- #
11
- def each(&block)
12
- cell_items.each(&block)
13
- end
14
-
15
- #
16
- # Return the PageObject::Elements::TableCell for the index provided. Index
17
- # is zero based. If the index provided is a String then it
18
- # will be matched with the text from the columns in the first row.
19
- # The text can be a substring of the full column text.
20
- #
21
- def [](what)
22
- idx = find_index(what)
23
- idx && cell_items[idx]
24
- end
25
-
26
- #
27
- # Returns the number of columns in the table.
28
- #
29
- def columns
30
- cell_items.size
31
- end
32
-
33
- protected
34
-
35
- def cell_items
36
- @cell_items ||= element.cells.map do |obj|
37
- ::PageObject::Elements::TableCell.new(obj)
38
- end
39
- end
40
-
41
- def find_index(what)
42
- return what if what.is_a? Integer
43
-
44
- parent(tag_name: 'table').headers.find_index do |header|
45
- header.text.include? what
46
- end
47
- end
48
- end
49
-
50
- ::PageObject::Elements.tag_to_class[:tr] = ::PageObject::Elements::TableRow
51
- end
52
- end
1
+ require 'watir/elements/html_elements'
2
+
3
+ module PageObject
4
+ module Elements
5
+ class TableRow < Element
6
+ include Enumerable
7
+
8
+ #
9
+ # iterator that yields with a PageObject::Elements::TableCell
10
+ #
11
+ def each(&block)
12
+ cell_items.each(&block)
13
+ end
14
+
15
+ #
16
+ # Return the PageObject::Elements::TableCell for the index provided. Index
17
+ # is zero based. If the index provided is a String then it
18
+ # will be matched with the text from the columns in the first row.
19
+ # The text can be a substring of the full column text.
20
+ #
21
+ def [](what)
22
+ idx = find_index(what)
23
+ idx && cell_items[idx]
24
+ end
25
+
26
+ #
27
+ # Returns the number of columns in the table.
28
+ #
29
+ def columns
30
+ cell_items.size
31
+ end
32
+
33
+ protected
34
+
35
+ def cell_items
36
+ @cell_items ||= element.cells.map do |obj|
37
+ ::PageObject::Elements::TableCell.new(obj)
38
+ end
39
+ end
40
+
41
+ def find_index(what)
42
+ return what if what.is_a? Integer
43
+
44
+ parent(tag_name: 'table').headers.find_index do |header|
45
+ header.text.include? what
46
+ end
47
+ end
48
+ end
49
+
50
+ ::PageObject::Elements.tag_to_class[:tr] = ::PageObject::Elements::TableRow
51
+ end
52
+ end
@@ -1,9 +1,9 @@
1
- module PageObject
2
- module Elements
3
- class TextArea < Element
4
-
5
- end
6
-
7
- ::PageObject::Elements.tag_to_class[:textarea] = ::PageObject::Elements::TextArea
8
- end
9
- end
1
+ module PageObject
2
+ module Elements
3
+ class TextArea < Element
4
+
5
+ end
6
+
7
+ ::PageObject::Elements.tag_to_class[:textarea] = ::PageObject::Elements::TextArea
8
+ end
9
+ end
@@ -1,10 +1,10 @@
1
- module PageObject
2
- module Elements
3
- class TextField < Element
4
-
5
- end
6
-
7
- ::PageObject::Elements.type_to_class[:text] = ::PageObject::Elements::TextField
8
- ::PageObject::Elements.type_to_class[:password] = ::PageObject::Elements::TextField
9
- end
10
- end
1
+ module PageObject
2
+ module Elements
3
+ class TextField < Element
4
+
5
+ end
6
+
7
+ ::PageObject::Elements.type_to_class[:text] = ::PageObject::Elements::TextField
8
+ ::PageObject::Elements.type_to_class[:password] = ::PageObject::Elements::TextField
9
+ end
10
+ end
@@ -1,44 +1,42 @@
1
- module PageObject
2
- module Elements
3
- class UnorderedList < Element
4
- include Enumerable
5
-
6
- #
7
- # iterator that yields with a PageObject::Elements::ListItem
8
- #
9
- # @return [PageObject::Elements::ListItem]
10
- #
11
- def each(&block)
12
- list_items.each(&block)
13
- end
14
-
15
- #
16
- # Return the PageObject::Elements::ListItem for the index provided. Index
17
- # is zero based.
18
- #
19
- # @return [PageObject::Elements::ListItem]
20
- #
21
- def [](idx)
22
- list_items[idx]
23
- end
24
-
25
- #
26
- # Return the number of items contained in the unordered list
27
- #
28
- def items
29
- list_items.size
30
- end
31
-
32
- #
33
- # Return Array of ListItem objects that are children of the UnorderedList
34
- #
35
- def list_items
36
- @list_items ||= children(tag_name: 'li').map do |obj|
37
- Object::PageObject::Elements::ListItem.new(obj)
38
- end
39
- end
40
- end
41
-
42
- ::PageObject::Elements.tag_to_class[:ul] = ::PageObject::Elements::UnorderedList
43
- end
44
- end
1
+ module PageObject
2
+ module Elements
3
+ class UnorderedList < Element
4
+ include Enumerable
5
+
6
+ #
7
+ # iterator that yields with a PageObject::Elements::ListItem
8
+ #
9
+ # @return [PageObject::Elements::ListItem]
10
+ #
11
+ def each(&block)
12
+ list_items.each(&block)
13
+ end
14
+
15
+ #
16
+ # Return the PageObject::Elements::ListItem for the index provided. Index
17
+ # is zero based.
18
+ #
19
+ # @return [PageObject::Elements::ListItem]
20
+ #
21
+ def [](idx)
22
+ list_items[idx]
23
+ end
24
+
25
+ #
26
+ # Return the number of items contained in the unordered list
27
+ #
28
+ def items
29
+ list_items.size
30
+ end
31
+
32
+ #
33
+ # Return Array of ListItem objects that are children of the UnorderedList
34
+ #
35
+ def list_items
36
+ @list_items ||= children(tag_name: 'li')
37
+ end
38
+ end
39
+
40
+ ::PageObject::Elements.tag_to_class[:ul] = ::PageObject::Elements::UnorderedList
41
+ end
42
+ end
@@ -1,9 +1,9 @@
1
- module PageObject
2
- module Elements
3
- class Video < Media
4
-
5
- end
6
-
7
- ::PageObject::Elements.type_to_class[:video] = ::PageObject::Elements::Video
8
- end
9
- end
1
+ module PageObject
2
+ module Elements
3
+ class Video < Media
4
+
5
+ end
6
+
7
+ ::PageObject::Elements.type_to_class[:video] = ::PageObject::Elements::Video
8
+ end
9
+ end