page-object 1.2.0 → 1.2.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 +4 -4
- data/.travis.yml +22 -12
- data/ChangeLog +10 -0
- data/Gemfile +4 -2
- data/Guardfile +1 -1
- data/README.md +2 -2
- data/lib/page-object/accessors.rb +57 -35
- data/lib/page-object/elements/element.rb +26 -0
- data/lib/page-object/locator_generator.rb +46 -0
- data/lib/page-object/platforms/selenium_webdriver/element.rb +6 -6
- data/lib/page-object/platforms/selenium_webdriver/page_object.rb +14 -0
- data/lib/page-object/platforms/watir_webdriver/element.rb +0 -7
- data/lib/page-object/platforms/watir_webdriver/page_object.rb +16 -3
- data/lib/page-object/version.rb +1 -1
- data/page-object.gemspec +7 -10
- metadata +34 -375
- data/features/area.feature +0 -35
- data/features/async.feature +0 -21
- data/features/audio.feature +0 -64
- data/features/bold.feature +0 -21
- data/features/button.feature +0 -98
- data/features/canvas.feature +0 -37
- data/features/check_box.feature +0 -55
- data/features/div.feature +0 -45
- data/features/element.feature +0 -343
- data/features/file_field.feature +0 -40
- data/features/form.feature +0 -43
- data/features/frames.feature +0 -75
- data/features/generic_elements.feature +0 -29
- data/features/gxt_table_extension.feature +0 -23
- data/features/headings.feature +0 -97
- data/features/hidden_field.feature +0 -45
- data/features/html/04-Death_Becomes_Fur.mp4 +0 -0
- data/features/html/04-Death_Becomes_Fur.oga +0 -0
- data/features/html/async.html +0 -36
- data/features/html/double_click.html +0 -13
- data/features/html/failure.html +0 -8
- data/features/html/frame_1.html +0 -18
- data/features/html/frame_2.html +0 -16
- data/features/html/frame_3.html +0 -14
- data/features/html/frames.html +0 -12
- data/features/html/hover.html +0 -12
- data/features/html/iframes.html +0 -12
- data/features/html/images/circle.png +0 -0
- data/features/html/images/img_pulpit.jpg +0 -0
- data/features/html/images/submit.gif +0 -0
- data/features/html/indexed_property.html +0 -55
- data/features/html/modal.html +0 -17
- data/features/html/modal_1.html +0 -38
- data/features/html/modal_2.html +0 -27
- data/features/html/movie.mp4 +0 -0
- data/features/html/movie.ogg +0 -0
- data/features/html/multi_elements.html +0 -145
- data/features/html/nested_elements.html +0 -77
- data/features/html/nested_frame_1.html +0 -1
- data/features/html/nested_frame_2.html +0 -11
- data/features/html/nested_frame_3.html +0 -14
- data/features/html/nested_frames.html +0 -10
- data/features/html/planets.gif +0 -0
- data/features/html/static_elements.html +0 -194
- data/features/html/success.html +0 -8
- data/features/html/sun.gif +0 -0
- data/features/html/sun.html +0 -7
- data/features/html/widgets.html +0 -20
- data/features/image.feature +0 -50
- data/features/indexed_property.feature +0 -117
- data/features/italic.feature +0 -21
- data/features/javascript.feature +0 -28
- data/features/label.feature +0 -46
- data/features/link.feature +0 -52
- data/features/list_item.feature +0 -36
- data/features/modal_dialog.feature +0 -15
- data/features/multi_elements.feature +0 -498
- data/features/nested_elements.feature +0 -117
- data/features/ordered_list.feature +0 -56
- data/features/page_level_actions.feature +0 -90
- data/features/paragraph.feature +0 -35
- data/features/radio_button.feature +0 -58
- data/features/radio_button_group.feature +0 -29
- data/features/sample-app/public/audio_video.html +0 -23
- data/features/sample-app/public/jquery-1.3.2.js +0 -4376
- data/features/sample-app/public/jquery.html +0 -30
- data/features/sample-app/public/prototype-1.6.0.3.js +0 -4320
- data/features/sample-app/public/prototype.html +0 -35
- data/features/sample-app/sample_app.rb +0 -35
- data/features/section.feature +0 -136
- data/features/select_list.feature +0 -86
- data/features/span.feature +0 -37
- data/features/step_definitions/accessor_steps.rb +0 -64
- data/features/step_definitions/area_steps.rb +0 -19
- data/features/step_definitions/async_steps.rb +0 -83
- data/features/step_definitions/audio_steps.rb +0 -27
- data/features/step_definitions/bold_steps.rb +0 -12
- data/features/step_definitions/button_steps.rb +0 -48
- data/features/step_definitions/canvas_steps.rb +0 -15
- data/features/step_definitions/check_box_steps.rb +0 -35
- data/features/step_definitions/div_steps.rb +0 -19
- data/features/step_definitions/element_steps.rb +0 -294
- data/features/step_definitions/file_field_steps.rb +0 -19
- data/features/step_definitions/form_steps.rb +0 -19
- data/features/step_definitions/frames_steps.rb +0 -159
- data/features/step_definitions/generic_element_steps.rb +0 -31
- data/features/step_definitions/gxt_table_steps.rb +0 -53
- data/features/step_definitions/headings_steps.rb +0 -12
- data/features/step_definitions/hidden_field_steps.rb +0 -27
- data/features/step_definitions/image_steps.rb +0 -27
- data/features/step_definitions/indexed_property_steps.rb +0 -163
- data/features/step_definitions/italic_steps.rb +0 -12
- data/features/step_definitions/javascript_steps.rb +0 -53
- data/features/step_definitions/label_steps.rb +0 -19
- data/features/step_definitions/link_steps.rb +0 -40
- data/features/step_definitions/list_item_steps.rb +0 -19
- data/features/step_definitions/modal_dialog_steps.rb +0 -62
- data/features/step_definitions/multi_elements_steps.rb +0 -554
- data/features/step_definitions/nested_elements_steps.rb +0 -212
- data/features/step_definitions/ordered_list_steps.rb +0 -23
- data/features/step_definitions/page_level_actions_steps.rb +0 -135
- data/features/step_definitions/page_traversal_steps.rb +0 -8
- data/features/step_definitions/paragraph_steps.rb +0 -28
- data/features/step_definitions/radio_button_group_steps.rb +0 -36
- data/features/step_definitions/radio_button_steps.rb +0 -27
- data/features/step_definitions/section_steps.rb +0 -277
- data/features/step_definitions/select_list_steps.rb +0 -65
- data/features/step_definitions/span_steps.rb +0 -19
- data/features/step_definitions/table_cell_steps.rb +0 -15
- data/features/step_definitions/table_row_steps.rb +0 -23
- data/features/step_definitions/table_steps.rb +0 -70
- data/features/step_definitions/text_area_steps.rb +0 -35
- data/features/step_definitions/text_field_steps.rb +0 -35
- data/features/step_definitions/unordered_list_steps.rb +0 -23
- data/features/step_definitions/video_steps.rb +0 -45
- data/features/support/ajax_text_environment.rb +0 -26
- data/features/support/audio_video_page.rb +0 -24
- data/features/support/env.rb +0 -8
- data/features/support/hooks.rb +0 -8
- data/features/support/page.rb +0 -373
- data/features/support/persistent_browser.rb +0 -70
- data/features/support/targets/firefox14_osx.rb +0 -6
- data/features/support/targets/firefox14_windows7.rb +0 -6
- data/features/support/url_helper.rb +0 -61
- data/features/table.feature +0 -122
- data/features/table_cell.feature +0 -45
- data/features/table_row.feature +0 -43
- data/features/text_area.feature +0 -51
- data/features/text_field.feature +0 -70
- data/features/unordered_list.feature +0 -56
- data/features/video.feature +0 -69
- data/spec/page-object/accessors_spec.rb +0 -40
- data/spec/page-object/element_locators_spec.rb +0 -1144
- data/spec/page-object/elements/area_spec.rb +0 -45
- data/spec/page-object/elements/bold_spec.rb +0 -29
- data/spec/page-object/elements/button_spec.rb +0 -64
- data/spec/page-object/elements/canvas_spec.rb +0 -41
- data/spec/page-object/elements/check_box_spec.rb +0 -49
- data/spec/page-object/elements/div_spec.rb +0 -28
- data/spec/page-object/elements/element_spec.rb +0 -196
- data/spec/page-object/elements/file_field_spec.rb +0 -39
- data/spec/page-object/elements/form_spec.rb +0 -28
- data/spec/page-object/elements/heading_spec.rb +0 -48
- data/spec/page-object/elements/hidden_field_spec.rb +0 -28
- data/spec/page-object/elements/image_spec.rb +0 -66
- data/spec/page-object/elements/italic_spec.rb +0 -29
- data/spec/page-object/elements/label_spec.rb +0 -29
- data/spec/page-object/elements/link_spec.rb +0 -49
- data/spec/page-object/elements/list_item_spec.rb +0 -29
- data/spec/page-object/elements/media_spec.rb +0 -63
- data/spec/page-object/elements/nested_element_spec.rb +0 -254
- data/spec/page-object/elements/option_spec.rb +0 -11
- data/spec/page-object/elements/ordered_list_spec.rb +0 -78
- data/spec/page-object/elements/paragraph_spec.rb +0 -27
- data/spec/page-object/elements/select_list_spec.rb +0 -142
- data/spec/page-object/elements/selenium/radio_button_spec.rb +0 -44
- data/spec/page-object/elements/selenium/text_field_spec.rb +0 -49
- data/spec/page-object/elements/selenium_element_spec.rb +0 -218
- data/spec/page-object/elements/span_spec.rb +0 -26
- data/spec/page-object/elements/table_cell_spec.rb +0 -21
- data/spec/page-object/elements/table_row_spec.rb +0 -70
- data/spec/page-object/elements/table_spec.rb +0 -98
- data/spec/page-object/elements/text_area_spec.rb +0 -39
- data/spec/page-object/elements/unordered_list_spec.rb +0 -77
- data/spec/page-object/elements/video_spec.rb +0 -33
- data/spec/page-object/elements/watir_element_spec.rb +0 -193
- data/spec/page-object/javascript_framework_facade_spec.rb +0 -61
- data/spec/page-object/loads_platform_spec.rb +0 -53
- data/spec/page-object/page-object_spec.rb +0 -435
- data/spec/page-object/page_factory_spec.rb +0 -238
- data/spec/page-object/page_populator_spec.rb +0 -122
- data/spec/page-object/page_section_spec.rb +0 -80
- data/spec/page-object/platforms/selenium_webdriver/selenium_page_object_spec.rb +0 -68
- data/spec/page-object/platforms/selenium_webdriver_spec.rb +0 -29
- data/spec/page-object/platforms/watir_webdriver/watir_page_object_spec.rb +0 -29
- data/spec/page-object/platforms/watir_webdriver_spec.rb +0 -9
- data/spec/page-object/selenium_accessors_spec.rb +0 -628
- data/spec/page-object/watir_accessors_spec.rb +0 -1191
- data/spec/page-object/widget_spec.rb +0 -226
- data/spec/spec_helper.rb +0 -43
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'page-object/elements'
|
|
3
|
-
|
|
4
|
-
describe PageObject::Elements::Span do
|
|
5
|
-
let(:span) { PageObject::Elements::Span }
|
|
6
|
-
|
|
7
|
-
describe "when mapping how to find an element" do
|
|
8
|
-
it "should map watir types to same" do
|
|
9
|
-
[:class, :id, :index, :text, :title, :xpath].each do |t|
|
|
10
|
-
identifier = span.watir_identifier_for t => 'value'
|
|
11
|
-
expect(identifier.keys.first).to eql t
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it "should map selenium types to same" do
|
|
16
|
-
[:class, :id, :index, :name, :text, :title, :xpath].each do |t|
|
|
17
|
-
key, value = span.selenium_identifier_for t => 'value'
|
|
18
|
-
expect(key).to eql t
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
it "should register with tag_name :span" do
|
|
24
|
-
expect(::PageObject::Elements.element_class_for(:span)).to eql ::PageObject::Elements::Span
|
|
25
|
-
end
|
|
26
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'page-object/elements'
|
|
3
|
-
|
|
4
|
-
describe PageObject::Elements::TableCell do
|
|
5
|
-
|
|
6
|
-
context "interface" do
|
|
7
|
-
it "should register with tag_name :td" do
|
|
8
|
-
expect(::PageObject::Elements.element_class_for(:td)).to eql ::PageObject::Elements::TableCell
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
it "should register with tag_name :th" do
|
|
12
|
-
expect(::PageObject::Elements.element_class_for(:th)).to eql ::PageObject::Elements::TableCell
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it "should always be enabled" do
|
|
16
|
-
table_cell_element = double('table_cell_element')
|
|
17
|
-
table_cell = PageObject::Elements::TableCell.new(table_cell_element, :platform => :selenium_webdriver)
|
|
18
|
-
expect(table_cell.enabled?).to be true
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'page-object/elements'
|
|
3
|
-
|
|
4
|
-
describe PageObject::Elements::TableRow do
|
|
5
|
-
let(:table_cell) { double('table_cell') }
|
|
6
|
-
let(:table_row_driver) { double('table_row_driver') }
|
|
7
|
-
|
|
8
|
-
describe "interface" do
|
|
9
|
-
|
|
10
|
-
it "should register with tag_name :tr" do
|
|
11
|
-
expect(::PageObject::Elements.element_class_for(:tr)).to eql ::PageObject::Elements::TableRow
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
context "for selenium" do
|
|
15
|
-
it "should return a table cell when indexed" do
|
|
16
|
-
table_row = PageObject::Elements::TableRow.new(table_row_driver, :platform => :selenium_webdriver)
|
|
17
|
-
allow(table_row).to receive(:columns).and_return(2)
|
|
18
|
-
expect(table_row_driver).to receive(:find_elements).with(:xpath, ".//child::td|th").and_return(table_cell)
|
|
19
|
-
expect(table_cell).to receive(:[]).and_return(table_cell)
|
|
20
|
-
expect(table_row[0]).to be_instance_of PageObject::Elements::TableCell
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
it "should retrun the number of columns" do
|
|
24
|
-
table_row = PageObject::Elements::TableRow.new(table_row_driver, :platform => :selenium_webdriver)
|
|
25
|
-
expect(table_row_driver).to receive(:find_elements).with(:xpath, ".//child::td|th").and_return(table_row_driver)
|
|
26
|
-
expect(table_row_driver).to receive(:size).and_return(3)
|
|
27
|
-
expect(table_row.columns).to eql 3
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
it "should iterate over the table columns" do
|
|
31
|
-
table_row = PageObject::Elements::TableRow.new(table_row_driver, :platform => :selenium_webdriver)
|
|
32
|
-
expect(table_row).to receive(:columns).and_return(2)
|
|
33
|
-
allow(table_row).to receive(:[]).and_return(table_row_driver)
|
|
34
|
-
count = 0
|
|
35
|
-
table_row.each { |e| count += 1 }
|
|
36
|
-
expect(count).to eql 2
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
context "for watir" do
|
|
41
|
-
before(:each) do
|
|
42
|
-
allow(table_row_driver).to receive(:find_elements).and_return(table_row_driver)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
it "should return a table cell when indexed" do
|
|
46
|
-
table_row = PageObject::Elements::TableRow.new(table_row_driver, :platform => :watir_webdriver)
|
|
47
|
-
allow(table_row).to receive(:columns).and_return(2)
|
|
48
|
-
expect(table_row_driver).to receive(:[]).with(1).and_return(table_cell)
|
|
49
|
-
expect(table_row[1]).to be_instance_of PageObject::Elements::TableCell
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
it "should return the number of columns" do
|
|
53
|
-
table_row = PageObject::Elements::TableRow.new(table_row_driver, :platform => :watir_webdriver)
|
|
54
|
-
allow(table_row_driver).to receive(:wd).and_return(table_row_driver)
|
|
55
|
-
expect(table_row_driver).to receive(:find_elements).with(:xpath, ".//child::td|th").and_return(table_row_driver)
|
|
56
|
-
expect(table_row_driver).to receive(:size).and_return(3)
|
|
57
|
-
expect(table_row.columns).to eql 3
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
it "should iterate over the table columns" do
|
|
61
|
-
table_row = PageObject::Elements::TableRow.new(table_row_driver, :platform => :watir_webdriver)
|
|
62
|
-
expect(table_row).to receive(:columns).and_return(2)
|
|
63
|
-
allow(table_row).to receive(:[])
|
|
64
|
-
count = 0
|
|
65
|
-
table_row.each { |e| count += 1 }
|
|
66
|
-
expect(count).to eql 2
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
end
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'page-object/elements'
|
|
3
|
-
|
|
4
|
-
describe PageObject::Elements::Table do
|
|
5
|
-
describe "when mapping how to find an element" do
|
|
6
|
-
it "should map watir types to same" do
|
|
7
|
-
[:class, :id, :index, :xpath].each do |t|
|
|
8
|
-
identifier = PageObject::Elements::Table.watir_identifier_for t => 'value'
|
|
9
|
-
expect(identifier.keys.first).to eql t
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
it "should map selenium types to same" do
|
|
14
|
-
[:class, :id, :index, :name, :xpath].each do |t|
|
|
15
|
-
key, value = PageObject::Elements::Table.selenium_identifier_for t => 'value'
|
|
16
|
-
expect(key).to eql t
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
describe "interface" do
|
|
22
|
-
let(:table_element) { double('table_element') }
|
|
23
|
-
|
|
24
|
-
before(:each) do
|
|
25
|
-
allow(table_element).to receive(:[]).and_return(table_element)
|
|
26
|
-
allow(table_element).to receive(:find_elements).and_return(table_element)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
it "should register with tag_name :table" do
|
|
30
|
-
expect(::PageObject::Elements.element_class_for(:table)).to eql ::PageObject::Elements::Table
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
context "for watir" do
|
|
34
|
-
let(:watir_table) { PageObject::Elements::Table.new(table_element, :platform => :watir_webdriver) }
|
|
35
|
-
|
|
36
|
-
it "should return a table row when indexed" do
|
|
37
|
-
allow(table_element).to receive(:[]).with(1).and_return(table_element)
|
|
38
|
-
expect(watir_table[1]).to be_instance_of PageObject::Elements::TableRow
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
it "should return the first row" do
|
|
42
|
-
allow(table_element).to receive(:[]).with(0).and_return(table_element)
|
|
43
|
-
expect(watir_table.first_row).to be_instance_of PageObject::Elements::TableRow
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
it "shoudl return the last row" do
|
|
47
|
-
allow(table_element).to receive(:[]).with(-1).and_return(table_element)
|
|
48
|
-
expect(watir_table.last_row).to be_instance_of PageObject::Elements::TableRow
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
it "should return the number of rows" do
|
|
52
|
-
allow(table_element).to receive(:wd).and_return(table_element)
|
|
53
|
-
expect(table_element).to receive(:find_elements).with(:xpath, ".//child::tr").and_return(table_element)
|
|
54
|
-
expect(table_element).to receive(:size).and_return(2)
|
|
55
|
-
expect(watir_table.rows).to eql 2
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
it "should iterate over the table rows" do
|
|
59
|
-
expect(watir_table).to receive(:rows).and_return(2)
|
|
60
|
-
count = 0
|
|
61
|
-
watir_table.each { |e| count += 1 }
|
|
62
|
-
expect(count).to eql 2
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
context "for selenium" do
|
|
67
|
-
let(:selenium_table) { PageObject::Elements::Table.new(table_element, :platform => :selenium_webdriver) }
|
|
68
|
-
|
|
69
|
-
it "should return a table row when indexed" do
|
|
70
|
-
expect(table_element).to receive(:find_elements).with(:xpath, ".//child::tr").and_return(table_element)
|
|
71
|
-
expect(selenium_table[1]).to be_instance_of PageObject::Elements::TableRow
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
it "should return the first row" do
|
|
75
|
-
allow(table_element).to receive(:[]).with(0).and_return(table_element)
|
|
76
|
-
expect(selenium_table.first_row).to be_instance_of PageObject::Elements::TableRow
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
it "shoudl return the last row" do
|
|
80
|
-
allow(table_element).to receive(:[]).with(-1).and_return(table_element)
|
|
81
|
-
expect(selenium_table.last_row).to be_instance_of PageObject::Elements::TableRow
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
it "should return the number of rows" do
|
|
85
|
-
expect(table_element).to receive(:find_elements).with(:xpath, ".//child::tr").and_return(table_element)
|
|
86
|
-
expect(table_element).to receive(:size).and_return(2)
|
|
87
|
-
expect(selenium_table.rows).to eql 2
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
it "should iterate over the table rows" do
|
|
91
|
-
allow(selenium_table).to receive(:rows).and_return(2)
|
|
92
|
-
count = 0
|
|
93
|
-
selenium_table.each { |e| count += 1 }
|
|
94
|
-
expect(count).to eql 2
|
|
95
|
-
end
|
|
96
|
-
end
|
|
97
|
-
end
|
|
98
|
-
end
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'page-object/elements'
|
|
3
|
-
|
|
4
|
-
describe PageObject::Elements::TextArea do
|
|
5
|
-
let(:textarea) { PageObject::Elements::TextArea }
|
|
6
|
-
|
|
7
|
-
describe "when mapping how to find an element" do
|
|
8
|
-
it "should map watir types to same" do
|
|
9
|
-
[:class, :id, :index, :name, :xpath].each do |t|
|
|
10
|
-
identifier = textarea.watir_identifier_for t => 'value'
|
|
11
|
-
expect(identifier.keys.first).to eql t
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it "should map selenium types to same" do
|
|
16
|
-
[:class, :id, :name, :xpath, :index].each do |t|
|
|
17
|
-
key, value = textarea.selenium_identifier_for t => 'value'
|
|
18
|
-
expect(key).to eql t
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
describe "interface" do
|
|
24
|
-
|
|
25
|
-
it "should register with tag_name :textarea" do
|
|
26
|
-
expect(::PageObject::Elements.element_class_for(:textarea)).to eql ::PageObject::Elements::TextArea
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
context "for Selenium" do
|
|
30
|
-
it "should set its' value" do
|
|
31
|
-
text_area_element = double('text_area')
|
|
32
|
-
text_area = PageObject::Elements::TextArea.new(text_area_element, :platform => :selenium_webdriver)
|
|
33
|
-
expect(text_area_element).to receive(:clear)
|
|
34
|
-
expect(text_area_element).to receive(:send_keys).with('Joseph')
|
|
35
|
-
text_area.value = 'Joseph'
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'page-object/elements'
|
|
3
|
-
|
|
4
|
-
describe PageObject::Elements::UnorderedList do
|
|
5
|
-
let(:ul) { PageObject::Elements::UnorderedList }
|
|
6
|
-
|
|
7
|
-
describe "when mapping how to find an element" do
|
|
8
|
-
it "should map watir types to same" do
|
|
9
|
-
[:class, :id, :index, :xpath].each do |t|
|
|
10
|
-
identifier = ul.watir_identifier_for t => 'value'
|
|
11
|
-
expect(identifier.keys.first).to eql t
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it "should map selenium types to same" do
|
|
16
|
-
[:class, :id, :index, :name, :xpath].each do |t|
|
|
17
|
-
key, value = ul.selenium_identifier_for t => 'value'
|
|
18
|
-
expect(key).to eql t
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
describe "interface" do
|
|
24
|
-
let(:ul_element) { double('ul_element') }
|
|
25
|
-
|
|
26
|
-
it "should register with tag_name :ul" do
|
|
27
|
-
expect(::PageObject::Elements.element_class_for(:ul)).to eql ::PageObject::Elements::UnorderedList
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
context "for watir" do
|
|
31
|
-
it "should return a list item when indexed" do
|
|
32
|
-
ul = PageObject::Elements::UnorderedList.new(ul_element, :platform => :watir_webdriver)
|
|
33
|
-
allow(ul_element).to receive(:uls).and_return(ul_element)
|
|
34
|
-
expect(ul_element).to receive(:[])
|
|
35
|
-
ul[1]
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
it "should know how many items it contains" do
|
|
39
|
-
ul = PageObject::Elements::UnorderedList.new(ul_element, :platform => :watir_webdriver)
|
|
40
|
-
allow(ul_element).to receive(:uls).and_return([ul_element])
|
|
41
|
-
expect(ul.items).to eql 1
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
it "should know how to iterate over the items" do
|
|
45
|
-
ul = PageObject::Elements::UnorderedList.new(ul_element, :platform => :watir_webdriver)
|
|
46
|
-
expect(ul).to receive(:items).and_return(5)
|
|
47
|
-
allow(ul).to receive(:[])
|
|
48
|
-
count = 0
|
|
49
|
-
ul.each { |item| count += 1 }
|
|
50
|
-
expect(count).to eql 5
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
context "for selenium" do
|
|
55
|
-
it "should return a list item when indexed" do
|
|
56
|
-
ul = PageObject::Elements::UnorderedList.new(ul_element, :platform => :selenium_webdriver)
|
|
57
|
-
expect(ul_element).to receive(:find_elements).and_return([ul_element, ul_element])
|
|
58
|
-
ul[1]
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
it "should know how many items it contains" do
|
|
62
|
-
ul = PageObject::Elements::UnorderedList.new(ul_element, :platform => :selenium_webdriver)
|
|
63
|
-
expect(ul_element).to receive(:find_elements).and_return([ul_element])
|
|
64
|
-
expect(ul.items).to eql 1
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
it "should know how to iterate over the items" do
|
|
68
|
-
ul = PageObject::Elements::UnorderedList.new(ul_element, :platform => :selenium_webdriver)
|
|
69
|
-
expect(ul).to receive(:items).and_return(5)
|
|
70
|
-
allow(ul).to receive(:[])
|
|
71
|
-
count = 0
|
|
72
|
-
ul.each { |item| count += 1 }
|
|
73
|
-
expect(count).to eql 5
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'page-object/elements'
|
|
3
|
-
|
|
4
|
-
describe PageObject::Elements::Video do
|
|
5
|
-
|
|
6
|
-
let(:video) { PageObject::Elements::Video.new(platform, :platform => :watir_webdriver) }
|
|
7
|
-
let(:platform) { double('platform')}
|
|
8
|
-
let(:wd) { double('wd') }
|
|
9
|
-
|
|
10
|
-
before do
|
|
11
|
-
allow(platform).to receive(:wd).and_return wd
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it "should return height when present" do
|
|
15
|
-
expect(wd).to receive(:size).and_return('height' => 20)
|
|
16
|
-
expect(video.height).to eq(20)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it "should not return height when not present" do
|
|
20
|
-
expect(wd).to receive(:size).and_return({})
|
|
21
|
-
expect(video.height).to eq(nil)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
it "should return width when present" do
|
|
25
|
-
expect(wd).to receive(:size).and_return('width' => 20)
|
|
26
|
-
expect(video.width).to eq(20)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
it "should not return width when not present" do
|
|
30
|
-
expect(wd).to receive(:size).and_return({})
|
|
31
|
-
expect(video.width).to eq(nil)
|
|
32
|
-
end
|
|
33
|
-
end
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'page-object/elements/element'
|
|
3
|
-
|
|
4
|
-
describe "Element for Watir" do
|
|
5
|
-
let(:watir_driver) { double('watir_driver') }
|
|
6
|
-
let(:watir_element) { ::PageObject::Elements::Element.new(watir_driver, :platform => :watir_webdriver) }
|
|
7
|
-
|
|
8
|
-
before(:each) do
|
|
9
|
-
allow(Selenium::WebDriver::Mouse).to receive(:new).and_return(watir_driver)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
it "should know when it is visible" do
|
|
13
|
-
allow(watir_driver).to receive(:present?).and_return(true)
|
|
14
|
-
allow(watir_driver).to receive(:displayed?).and_return(true)
|
|
15
|
-
expect(watir_element.visible?).to eql true
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
it "should know when it is not visible" do
|
|
19
|
-
allow(watir_driver).to receive(:present?).and_return(false)
|
|
20
|
-
allow(watir_driver).to receive(:displayed?).and_return(false)
|
|
21
|
-
expect(watir_element.visible?).to eql false
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
it "should know when it exists" do
|
|
25
|
-
allow(watir_driver).to receive(:exists?).and_return(true)
|
|
26
|
-
expect(watir_element.exists?).to eql true
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
it "should know when it does not exist" do
|
|
30
|
-
allow(watir_driver).to receive(:exists?).and_return(false)
|
|
31
|
-
allow(watir_driver).to receive(:nil?).and_return(true)
|
|
32
|
-
expect(watir_element.exists?).to eql false
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
it "should be able to return the text contained in the element" do
|
|
36
|
-
expect(watir_driver).to receive(:text).and_return("my text")
|
|
37
|
-
expect(watir_element.text).to eql "my text"
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
it "should know when it is equal to another" do
|
|
41
|
-
expect(watir_driver).to receive(:==).and_return(true)
|
|
42
|
-
expect(watir_element).to eq watir_element
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
it "should know when it is not equal to another" do
|
|
46
|
-
expect(watir_element).not_to eq 'not an element'
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
it "should return its tag name" do
|
|
50
|
-
expect(watir_driver).to receive(:tag_name).and_return("h1")
|
|
51
|
-
expect(watir_element.tag_name).to eql "h1"
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
it "should know its value" do
|
|
55
|
-
allow(watir_driver).to receive(:value).and_return("value")
|
|
56
|
-
allow(watir_driver).to receive(:attribute).and_return("value")
|
|
57
|
-
expect(watir_element.value).to eql "value"
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
it "should know how to retrieve the value of an attribute" do
|
|
61
|
-
allow(watir_driver).to receive(:attribute_value).and_return(true)
|
|
62
|
-
allow(watir_driver).to receive(:attribute).and_return(true)
|
|
63
|
-
expect(watir_element.attribute("readonly")).to be true
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
it "should be clickable" do
|
|
67
|
-
expect(watir_driver).to receive(:click)
|
|
68
|
-
watir_element.click
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
it "should be double clickable" do
|
|
72
|
-
expect(watir_driver).to receive(:double_click)
|
|
73
|
-
watir_element.double_click
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
it "should be right clickable" do
|
|
77
|
-
allow(watir_driver).to receive(:right_click)
|
|
78
|
-
allow(watir_driver).to receive(:context_click)
|
|
79
|
-
watir_element.right_click
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
it "should be able to block until it is present" do
|
|
83
|
-
allow(watir_driver).to receive(:wait_until_present).with(10)
|
|
84
|
-
watir_element.when_present(10)
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
it "should return the element when it is present" do
|
|
88
|
-
allow(watir_driver).to receive(:wait_until_present).with(10)
|
|
89
|
-
element = watir_element.when_present(10)
|
|
90
|
-
expect(element).to equal watir_element
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
it "should use the overriden wait when set" do
|
|
94
|
-
PageObject.default_element_wait = 20
|
|
95
|
-
allow(watir_driver).to receive(:wait_until_present).with(20)
|
|
96
|
-
watir_element.when_present
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
it "should be able to block until it is visible" do
|
|
100
|
-
allow(::Watir::Wait).to receive(:until).with(10, "Element was not visible in 10 seconds")
|
|
101
|
-
allow(watir_driver).to receive(:displayed?).and_return(true)
|
|
102
|
-
watir_element.when_visible(10)
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
it "should return the element when it is visible" do
|
|
106
|
-
allow(::Watir::Wait).to receive(:until).with(10, "Element was not visible in 10 seconds")
|
|
107
|
-
allow(watir_driver).to receive(:displayed?).and_return(true)
|
|
108
|
-
element = watir_element.when_visible(10)
|
|
109
|
-
expect(element).to equal watir_element
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
it "should be able to block until it is not visible" do
|
|
113
|
-
allow(::Watir::Wait).to receive(:while).with(10, "Element still visible after 10 seconds")
|
|
114
|
-
allow(watir_driver).to receive(:displayed?).and_return(false)
|
|
115
|
-
watir_element.when_not_visible(10)
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
it "should return the element when it is not visible" do
|
|
119
|
-
allow(::Watir::Wait).to receive(:while).with(10, "Element still visible after 10 seconds")
|
|
120
|
-
allow(watir_driver).to receive(:displayed?).and_return(false)
|
|
121
|
-
element = watir_element.when_not_visible(10)
|
|
122
|
-
expect(element).to equal watir_element
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
it "should be able to block until a user define event fires true" do
|
|
126
|
-
allow(::Watir::Wait).to receive(:until).with(10, "Element blah")
|
|
127
|
-
watir_element.wait_until(10, "Element blah") {true}
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
it "should send keys to the element" do
|
|
131
|
-
expect(watir_driver).to receive(:send_keys).with([:control, 'a'])
|
|
132
|
-
watir_element.send_keys([:control, 'a'])
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
it "should clear its' contents" do
|
|
136
|
-
expect(watir_driver).to receive(:clear)
|
|
137
|
-
watir_element.clear
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
it "should scroll into view" do
|
|
141
|
-
allow(watir_driver).to receive(:wd).and_return(watir_driver)
|
|
142
|
-
expect(watir_driver).to receive(:location_once_scrolled_into_view)
|
|
143
|
-
watir_element.scroll_into_view
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
it "should know its location" do
|
|
147
|
-
allow(watir_driver).to receive(:wd).and_return(watir_driver)
|
|
148
|
-
expect(watir_driver).to receive(:location)
|
|
149
|
-
watir_element.location
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
it "should know its size" do
|
|
153
|
-
allow(watir_driver).to receive(:wd).and_return(watir_driver)
|
|
154
|
-
expect(watir_driver).to receive(:size)
|
|
155
|
-
watir_element.size
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
it "should have a height" do
|
|
159
|
-
allow(watir_driver).to receive(:wd).and_return(watir_driver)
|
|
160
|
-
expect(watir_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
|
|
161
|
-
expect(watir_element.height).to eql 20
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
it "should have a width" do
|
|
165
|
-
allow(watir_driver).to receive(:wd).and_return(watir_driver)
|
|
166
|
-
expect(watir_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
|
|
167
|
-
expect(watir_element.width).to eql 30
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
it "should have a centre" do
|
|
171
|
-
allow(watir_driver).to receive(:wd).and_return(watir_driver)
|
|
172
|
-
expect(watir_driver).to receive(:location).and_return({'y' => 80, 'x' => 40})
|
|
173
|
-
expect(watir_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
|
|
174
|
-
expect(watir_element.centre).to include(
|
|
175
|
-
'y' => 90,
|
|
176
|
-
'x' => 55
|
|
177
|
-
)
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
it "should have a centre greater than y position" do
|
|
181
|
-
allow(watir_driver).to receive(:wd).and_return(watir_driver)
|
|
182
|
-
expect(watir_driver).to receive(:location).and_return({'y' => 80, 'x' => 40}).twice
|
|
183
|
-
expect(watir_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
|
|
184
|
-
expect(watir_element.centre['y']).to be > watir_element.location['y']
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
it "should have a centre greater than x position" do
|
|
188
|
-
allow(watir_driver).to receive(:wd).and_return(watir_driver)
|
|
189
|
-
expect(watir_driver).to receive(:location).and_return({'y' => 80, 'x' => 40}).twice
|
|
190
|
-
expect(watir_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
|
|
191
|
-
expect(watir_element.centre['x']).to be > watir_element.location['x']
|
|
192
|
-
end
|
|
193
|
-
end
|