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,45 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'page-object/elements'
|
3
|
-
|
4
|
-
describe PageObject::Elements::Area do
|
5
|
-
let(:area) { PageObject::Elements::Area }
|
6
|
-
|
7
|
-
context "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 = area.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 = area.selenium_identifier_for t => 'value'
|
18
|
-
expect(key).to eql t
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
context "implementation" do
|
24
|
-
let(:area_element) { double('area_element') }
|
25
|
-
|
26
|
-
context "when using selenium" do
|
27
|
-
let(:selenium_area) { PageObject::Elements::Area.new(area_element, :platform => :selenium_webdriver) }
|
28
|
-
|
29
|
-
it "should know its coords" do
|
30
|
-
expect(area_element).to receive(:attribute).with(:coords).and_return("1,2,3,4")
|
31
|
-
expect(selenium_area.coords).to eql "1,2,3,4"
|
32
|
-
end
|
33
|
-
|
34
|
-
it "should know its shape" do
|
35
|
-
expect(area_element).to receive(:attribute).with(:shape).and_return('circle')
|
36
|
-
expect(selenium_area.shape).to eql 'circle'
|
37
|
-
end
|
38
|
-
|
39
|
-
it "should know its href" do
|
40
|
-
expect(area_element).to receive(:attribute).with(:href).and_return('twitter.com')
|
41
|
-
expect(selenium_area.href).to eql 'twitter.com'
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'page-object/elements'
|
3
|
-
|
4
|
-
describe PageObject::Elements::Bold do
|
5
|
-
let(:bold) { PageObject::Elements::Bold }
|
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 = bold.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 = bold.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 :b" do
|
26
|
-
expect(::PageObject::Elements.element_class_for(:b)).to eql ::PageObject::Elements::Bold
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,64 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'page-object/elements'
|
3
|
-
|
4
|
-
describe PageObject::Elements::Button do
|
5
|
-
let(:button) { PageObject::Elements::Button }
|
6
|
-
|
7
|
-
context "when mapping how to find an element" do
|
8
|
-
it "should map watir types to same" do
|
9
|
-
[:class, :id, :index, :name, :value, :xpath, :src, :alt, :css].each do |t|
|
10
|
-
identifier = button.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, :value, :xpath, :src, :alt, :css].each do |t|
|
17
|
-
key, value = button.selenium_identifier_for t => 'value'
|
18
|
-
expect(key).to eql t
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
describe "interface" do
|
24
|
-
let(:button_element) { double('button_element') }
|
25
|
-
|
26
|
-
it "should register with type :submit" do
|
27
|
-
expect(::PageObject::Elements.element_class_for(:input, :submit)).to eql ::PageObject::Elements::Button
|
28
|
-
end
|
29
|
-
|
30
|
-
it "should register with type :image" do
|
31
|
-
expect(::PageObject::Elements.element_class_for(:input, :image)).to eql ::PageObject::Elements::Button
|
32
|
-
end
|
33
|
-
|
34
|
-
it "should register with type :button" do
|
35
|
-
expect(::PageObject::Elements.element_class_for(:input, :button)).to eql ::PageObject::Elements::Button
|
36
|
-
end
|
37
|
-
|
38
|
-
it "should retisger with type :reset" do
|
39
|
-
expect(::PageObject::Elements.element_class_for(:input, :reset)).to eql ::PageObject::Elements::Button
|
40
|
-
end
|
41
|
-
|
42
|
-
context "for selenium" do
|
43
|
-
it "should return error when asked for its' text" do
|
44
|
-
button = PageObject::Elements::Button.new(button_element, :platform => :selenium_webdriver)
|
45
|
-
expect(lambda { button.text }).to raise_error
|
46
|
-
end
|
47
|
-
|
48
|
-
it "should return text for a button tag button" do
|
49
|
-
allow(button_element).to receive(:tag_name).and_return('button')
|
50
|
-
allow(button_element).to receive(:text).and_return('button?')
|
51
|
-
button = PageObject::Elements::Button.new(button_element, :platform => :selenium_webdriver)
|
52
|
-
expect(button.text).to eq 'button?'
|
53
|
-
end
|
54
|
-
|
55
|
-
it "should return text for an input tag button" do
|
56
|
-
allow(button_element).to receive(:tag_name).and_return('input')
|
57
|
-
allow(button_element).to receive(:attribute).with('value').and_return('button!')
|
58
|
-
button = PageObject::Elements::Button.new(button_element, :platform => :selenium_webdriver)
|
59
|
-
expect(button.text).to eq 'button!'
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'page-object/elements'
|
3
|
-
|
4
|
-
describe PageObject::Elements::Canvas do
|
5
|
-
let(:area) { PageObject::Elements::Canvas }
|
6
|
-
|
7
|
-
context "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 = area.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 = area.selenium_identifier_for t => 'value'
|
18
|
-
expect(key).to eql t
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
context "implementation" do
|
24
|
-
let(:canvas_element) { double('canvas_element') }
|
25
|
-
let(:wd) { double('wd') }
|
26
|
-
|
27
|
-
context "when using selenium" do
|
28
|
-
let(:selenium_canvas) { PageObject::Elements::Canvas.new(canvas_element, :platform => :selenium_webdriver) }
|
29
|
-
|
30
|
-
it "should know its width" do
|
31
|
-
expect(canvas_element).to receive(:size).and_return({'width' => 400})
|
32
|
-
expect(selenium_canvas.width).to eql 400
|
33
|
-
end
|
34
|
-
|
35
|
-
it "should know its height" do
|
36
|
-
expect(canvas_element).to receive(:size).and_return({'height' => 100})
|
37
|
-
expect(selenium_canvas.height).to eql 100
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,49 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'page-object/elements'
|
3
|
-
|
4
|
-
describe PageObject::Elements::CheckBox do
|
5
|
-
let(:checkbox) { PageObject::Elements::CheckBox }
|
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, :value].each do |t|
|
10
|
-
identifier = checkbox.watir_identifier_for t => 'value'
|
11
|
-
expect(identifier.keys.first).to eql t
|
12
|
-
end
|
13
|
-
end
|
14
|
-
it "should map selenium types to same" do
|
15
|
-
[:class, :id, :name, :xpath, :index, :value].each do |t|
|
16
|
-
key, value = checkbox.selenium_identifier_for t => 'value'
|
17
|
-
expect(key).to eql t
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
describe "interface" do
|
23
|
-
let(:check_box) { double('check_box') }
|
24
|
-
let(:selenium_cb) { PageObject::Elements::CheckBox.new(check_box, :platform => :selenium_webdriver) }
|
25
|
-
|
26
|
-
it "should register with type :checkbox" do
|
27
|
-
expect(::PageObject::Elements.element_class_for(:input, :checkbox)).to eql ::PageObject::Elements::CheckBox
|
28
|
-
end
|
29
|
-
|
30
|
-
context "for selenium" do
|
31
|
-
it "should check" do
|
32
|
-
expect(check_box).to receive(:click)
|
33
|
-
expect(check_box).to receive(:selected?).and_return(false)
|
34
|
-
selenium_cb.check
|
35
|
-
end
|
36
|
-
|
37
|
-
it "should uncheck" do
|
38
|
-
expect(check_box).to receive(:click)
|
39
|
-
expect(check_box).to receive(:selected?).and_return(true)
|
40
|
-
selenium_cb.uncheck
|
41
|
-
end
|
42
|
-
|
43
|
-
it "should know if it is checked" do
|
44
|
-
expect(check_box).to receive(:selected?).and_return(true)
|
45
|
-
expect(selenium_cb).to be_checked
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'page-object/elements'
|
3
|
-
|
4
|
-
describe PageObject::Elements::Div do
|
5
|
-
let(:div) { PageObject::Elements::Div }
|
6
|
-
|
7
|
-
describe "when mapping how to find an element" do
|
8
|
-
it "should map watir types to same" do
|
9
|
-
[:class, :id, :text, :index, :xpath, :name, :title, :css].each do |t|
|
10
|
-
identifier = div.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, :text, :index, :name, :xpath, :title, :css].each do |t|
|
17
|
-
key, value = div.selenium_identifier_for t => 'value'
|
18
|
-
expect(key).to eql t
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
describe "interface" do
|
23
|
-
it "should register with tag :div" do
|
24
|
-
expect(::PageObject::Elements.element_class_for(:div)).to eql ::PageObject::Elements::Div
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,196 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'page-object/elements'
|
3
|
-
|
4
|
-
|
5
|
-
describe "Element" do
|
6
|
-
|
7
|
-
context "when building the identifiers for Watir" do
|
8
|
-
it "should build xpath when finding elements by name where not supported" do
|
9
|
-
['table', 'span', 'div', 'td', 'li', 'ol', 'ul'].each do |tag|
|
10
|
-
how = {:tag_name => tag, :name => 'blah'}
|
11
|
-
result = PageObject::Elements::Element.watir_identifier_for how
|
12
|
-
expect(result[:xpath]).to eql ".//#{tag}[@name='blah']"
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
context "when building the identifiers for Selenium" do
|
18
|
-
def all_basic_elements
|
19
|
-
['textarea', 'select', 'a', 'div', 'span', 'table', 'td', 'img', 'form', 'li', 'ul', 'ol']
|
20
|
-
end
|
21
|
-
|
22
|
-
def all_input_elements
|
23
|
-
['text', 'hidden', 'checkbox', 'radio']
|
24
|
-
end
|
25
|
-
|
26
|
-
it "should build xpath when index is provided for basic elements" do
|
27
|
-
all_basic_elements.each do |tag|
|
28
|
-
identifier = {:tag_name => tag, :index => 1}
|
29
|
-
how, what = PageObject::Elements::Element.selenium_identifier_for identifier
|
30
|
-
expect(how).to eql :xpath
|
31
|
-
expect(what).to eql "(.//#{tag})[2]"
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
it "should should build xpath when index is provided for input elements" do
|
36
|
-
all_input_elements.each do |tag|
|
37
|
-
identifier = {:tag_name => 'input', :type => tag, :index => 1}
|
38
|
-
how, what = PageObject::Elements::Element.selenium_identifier_for identifier
|
39
|
-
expect(how).to eql :xpath
|
40
|
-
expect(what).to include "(.//input[@type='#{tag}'])[2]"
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
it "should build xpath when locating basic elements by name and index" do
|
45
|
-
all_basic_elements.each do |tag|
|
46
|
-
identifier = {:tag_name => tag, :name => 'blah', :index => 0}
|
47
|
-
how, what = PageObject::Elements::Element.selenium_identifier_for identifier
|
48
|
-
expect(how).to eql :xpath
|
49
|
-
expect(what).to eql "(.//#{tag}[@name='blah'])[1]"
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
it "should build xpath when locating input elements by name and index" do
|
54
|
-
all_input_elements.each do |type|
|
55
|
-
identifier = {:tag_name => 'input', :type => "#{type}", :name => 'blah', :index => 0}
|
56
|
-
how, what = PageObject::Elements::Element.selenium_identifier_for identifier
|
57
|
-
expect(how).to eql :xpath
|
58
|
-
expect(what).to include "(.//input[@type='#{type}' and @name='blah'])[1]"
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
it "should build xpath when locating basic elements by name and class" do
|
63
|
-
all_basic_elements.each do |tag|
|
64
|
-
identifier = {:tag_name => tag, :class => 'bar', :name => 'foo'}
|
65
|
-
how, what = PageObject::Elements::Element.selenium_identifier_for identifier
|
66
|
-
expect(how).to eql :xpath
|
67
|
-
expect(what).to eql ".//#{tag}[@class='bar' and @name='foo']"
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
it "should build xpath when locating input elements by name and class" do
|
72
|
-
all_input_elements.each do |type|
|
73
|
-
identifier = {:tag_name => 'input', :type => "#{type}", :class => 'bar', :name => 'foo'}
|
74
|
-
how, what = PageObject::Elements::Element.selenium_identifier_for identifier
|
75
|
-
expect(what).to include ".//input[@type='#{type}' and @class='bar' and @name='foo']"
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
context "interaction with native element" do
|
81
|
-
let(:wd) { double('') }
|
82
|
-
let(:native) { double(wd: wd) }
|
83
|
-
let(:element) { PageObject::Elements::Element.new(native, :platform => :watir_webdriver) }
|
84
|
-
|
85
|
-
it "should check if native is enabled" do
|
86
|
-
expect(native).to receive(:enabled?).and_return(true)
|
87
|
-
expect(element).to be_enabled
|
88
|
-
end
|
89
|
-
|
90
|
-
it "should click the native" do
|
91
|
-
expect(native).to receive(:click)
|
92
|
-
element.click
|
93
|
-
end
|
94
|
-
|
95
|
-
it "should double click the native" do
|
96
|
-
expect(native).to receive(:double_click)
|
97
|
-
element.double_click
|
98
|
-
end
|
99
|
-
|
100
|
-
it "should inspect the native" do
|
101
|
-
expect(native).to receive(:inspect)
|
102
|
-
element.inspect
|
103
|
-
end
|
104
|
-
|
105
|
-
it "should retrieve the native's style" do
|
106
|
-
expect(native).to receive(:style).with('foo').and_return("cheezy_style")
|
107
|
-
expect(element.style('foo')).to eql 'cheezy_style'
|
108
|
-
end
|
109
|
-
|
110
|
-
it "should know if a native is disabled" do
|
111
|
-
expect(native).to receive(:enabled?).and_return(false)
|
112
|
-
expect(element).to be_disabled
|
113
|
-
end
|
114
|
-
|
115
|
-
it "should know if a native is visible" do
|
116
|
-
expect(native).to receive(:present?).and_return(false)
|
117
|
-
expect(element.visible?).to eq(false)
|
118
|
-
end
|
119
|
-
|
120
|
-
it "should know if a native exists" do
|
121
|
-
expect(native).to receive(:exists?).and_return(true)
|
122
|
-
expect(element).to exist
|
123
|
-
end
|
124
|
-
|
125
|
-
it "should flash the native" do
|
126
|
-
expect(native).to receive(:flash)
|
127
|
-
element.flash
|
128
|
-
end
|
129
|
-
|
130
|
-
it "should inspect the native's text" do
|
131
|
-
expect(native).to receive(:text).and_return('My value is 42')
|
132
|
-
expect(element.text).to eq('My value is 42')
|
133
|
-
end
|
134
|
-
|
135
|
-
it "should inspect the native's html" do
|
136
|
-
expect(native).to receive(:html).and_return('<p>42</p>')
|
137
|
-
expect(element.html).to eq('<p>42</p>')
|
138
|
-
end
|
139
|
-
|
140
|
-
it "should inspect the native's value" do
|
141
|
-
expect(native).to receive(:html).and_return('42')
|
142
|
-
expect(element.html).to eq('42')
|
143
|
-
end
|
144
|
-
|
145
|
-
it "should inspect the native's tag name" do
|
146
|
-
expect(native).to receive(:attribute_value).and_return('bar')
|
147
|
-
expect(element.attribute('foo')).to eq('bar')
|
148
|
-
end
|
149
|
-
|
150
|
-
it "should fire the native's event" do
|
151
|
-
expect(native).to receive(:fire_event).with('hello')
|
152
|
-
element.fire_event('hello')
|
153
|
-
end
|
154
|
-
|
155
|
-
it "should hover" do
|
156
|
-
expect(native).to receive(:hover)
|
157
|
-
element.hover
|
158
|
-
end
|
159
|
-
|
160
|
-
it "should focus" do
|
161
|
-
expect(native).to receive(:focus)
|
162
|
-
element.focus
|
163
|
-
end
|
164
|
-
|
165
|
-
it "should select the native's text" do
|
166
|
-
expect(native).to receive(:select_text).with('hello')
|
167
|
-
element.select_text('hello')
|
168
|
-
end
|
169
|
-
|
170
|
-
it "should wait until present" do
|
171
|
-
expect(native).to receive(:wait_until_present).with(42)
|
172
|
-
element.wait_until_present(42)
|
173
|
-
end
|
174
|
-
|
175
|
-
it "should send keys" do
|
176
|
-
expect(native).to receive(:send_keys).with('foo bar')
|
177
|
-
element.send_keys('foo bar')
|
178
|
-
end
|
179
|
-
|
180
|
-
it "should clear" do
|
181
|
-
expect(native).to receive(:clear)
|
182
|
-
element.clear
|
183
|
-
end
|
184
|
-
|
185
|
-
it "should inspect the native's id" do
|
186
|
-
expect(native).to receive(:id).and_return('element123')
|
187
|
-
expect(element.id).to eq('element123')
|
188
|
-
end
|
189
|
-
|
190
|
-
it "should inspect the native's id" do
|
191
|
-
expect(wd).to receive(:location_once_scrolled_into_view)
|
192
|
-
expect(native).to receive(:wd).and_return(wd)
|
193
|
-
element.scroll_into_view
|
194
|
-
end
|
195
|
-
end
|
196
|
-
end
|