page_object 1.1.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/.gitignore +7 -0
- data/.rspec +2 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +7 -0
- data/ChangeLog +809 -0
- data/Gemfile +14 -0
- data/Guardfile +20 -0
- data/LICENSE +20 -0
- data/README.md +111 -0
- data/Rakefile +35 -0
- data/cucumber.yml +10 -0
- data/features/area.feature +35 -0
- data/features/async.feature +30 -0
- data/features/audio.feature +68 -0
- data/features/bold.feature +21 -0
- data/features/button.feature +98 -0
- data/features/canvas.feature +37 -0
- data/features/check_box.feature +55 -0
- data/features/div.feature +45 -0
- data/features/element.feature +322 -0
- data/features/file_field.feature +40 -0
- data/features/form.feature +43 -0
- data/features/frames.feature +75 -0
- data/features/generic_elements.feature +29 -0
- data/features/gxt_table_extension.feature +24 -0
- data/features/headings.feature +97 -0
- data/features/hidden_field.feature +45 -0
- 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 +36 -0
- data/features/html/double_click.html +13 -0
- data/features/html/failure.html +8 -0
- data/features/html/frame_1.html +18 -0
- data/features/html/frame_2.html +16 -0
- data/features/html/frame_3.html +14 -0
- data/features/html/frames.html +12 -0
- data/features/html/hover.html +12 -0
- data/features/html/iframes.html +12 -0
- 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 +55 -0
- data/features/html/modal.html +17 -0
- data/features/html/modal_1.html +38 -0
- data/features/html/modal_2.html +27 -0
- data/features/html/movie.mp4 +0 -0
- data/features/html/movie.ogg +0 -0
- data/features/html/multi_elements.html +144 -0
- data/features/html/nested_elements.html +77 -0
- data/features/html/nested_frame_1.html +1 -0
- data/features/html/nested_frame_2.html +11 -0
- data/features/html/nested_frame_3.html +14 -0
- data/features/html/nested_frames.html +10 -0
- data/features/html/planets.gif +0 -0
- data/features/html/static_elements.html +207 -0
- data/features/html/success.html +8 -0
- data/features/html/sun.gif +0 -0
- data/features/html/sun.html +7 -0
- data/features/image.feature +50 -0
- data/features/indexed_property.feature +117 -0
- data/features/javascript.feature +28 -0
- data/features/label.feature +46 -0
- data/features/link.feature +52 -0
- data/features/list_item.feature +36 -0
- data/features/modal_dialog.feature +15 -0
- data/features/multi_elements.feature +492 -0
- data/features/nested_elements.feature +117 -0
- data/features/ordered_list.feature +56 -0
- data/features/page_level_actions.feature +90 -0
- data/features/paragraph.feature +35 -0
- data/features/radio_button.feature +58 -0
- data/features/radio_button_group.feature +29 -0
- data/features/sample-app/public/jquery-1.3.2.js +4376 -0
- data/features/sample-app/public/jquery.html +30 -0
- data/features/sample-app/public/prototype-1.6.0.3.js +4320 -0
- data/features/sample-app/public/prototype.html +35 -0
- data/features/sample-app/sample_app.rb +35 -0
- data/features/section.feature +132 -0
- data/features/select_list.feature +86 -0
- data/features/span.feature +37 -0
- data/features/step_definitions/accessor_steps.rb +64 -0
- data/features/step_definitions/area_steps.rb +19 -0
- data/features/step_definitions/async_steps.rb +83 -0
- data/features/step_definitions/audio_steps.rb +27 -0
- data/features/step_definitions/bold_steps.rb +12 -0
- data/features/step_definitions/button_steps.rb +48 -0
- data/features/step_definitions/canvas_steps.rb +15 -0
- data/features/step_definitions/check_box_steps.rb +35 -0
- data/features/step_definitions/div_steps.rb +19 -0
- data/features/step_definitions/element_steps.rb +266 -0
- data/features/step_definitions/file_field_steps.rb +19 -0
- data/features/step_definitions/form_steps.rb +19 -0
- data/features/step_definitions/frames_steps.rb +159 -0
- data/features/step_definitions/generic_element_steps.rb +31 -0
- data/features/step_definitions/gxt_table_steps.rb +58 -0
- data/features/step_definitions/headings_steps.rb +12 -0
- data/features/step_definitions/hidden_field_steps.rb +27 -0
- data/features/step_definitions/image_steps.rb +27 -0
- data/features/step_definitions/indexed_property_steps.rb +163 -0
- data/features/step_definitions/javascript_steps.rb +53 -0
- data/features/step_definitions/label_steps.rb +19 -0
- data/features/step_definitions/link_steps.rb +40 -0
- data/features/step_definitions/list_item_steps.rb +19 -0
- data/features/step_definitions/modal_dialog_steps.rb +62 -0
- data/features/step_definitions/multi_elements_steps.rb +541 -0
- data/features/step_definitions/nested_elements_steps.rb +212 -0
- data/features/step_definitions/ordered_list_steps.rb +23 -0
- data/features/step_definitions/page_level_actions_steps.rb +135 -0
- data/features/step_definitions/page_traversal_steps.rb +4 -0
- data/features/step_definitions/paragraph_steps.rb +28 -0
- data/features/step_definitions/radio_button_group_steps.rb +36 -0
- data/features/step_definitions/radio_button_steps.rb +27 -0
- data/features/step_definitions/section_steps.rb +268 -0
- data/features/step_definitions/select_list_steps.rb +65 -0
- data/features/step_definitions/span_steps.rb +19 -0
- data/features/step_definitions/table_cell_steps.rb +15 -0
- data/features/step_definitions/table_row_steps.rb +23 -0
- data/features/step_definitions/table_steps.rb +70 -0
- data/features/step_definitions/text_area_steps.rb +35 -0
- data/features/step_definitions/text_field_steps.rb +35 -0
- data/features/step_definitions/unordered_list_steps.rb +23 -0
- data/features/step_definitions/video_steps.rb +45 -0
- data/features/support/ajax_text_environment.rb +26 -0
- data/features/support/env.rb +8 -0
- data/features/support/hooks.rb +8 -0
- data/features/support/page.rb +382 -0
- data/features/support/persistent_browser.rb +70 -0
- data/features/support/targets/firefox14_osx.rb +6 -0
- data/features/support/targets/firefox14_windows7.rb +6 -0
- data/features/support/url_helper.rb +57 -0
- data/features/table.feature +122 -0
- data/features/table_cell.feature +45 -0
- data/features/table_row.feature +43 -0
- data/features/text_area.feature +51 -0
- data/features/text_field.feature +70 -0
- data/features/unordered_list.feature +56 -0
- data/features/video.feature +73 -0
- data/lib/page-object.rb +421 -0
- data/lib/page-object/accessors.rb +1412 -0
- data/lib/page-object/core_ext/string.rb +5 -0
- data/lib/page-object/element_locators.rb +21 -0
- data/lib/page-object/elements.rb +60 -0
- data/lib/page-object/elements/area.rb +31 -0
- data/lib/page-object/elements/audio.rb +9 -0
- data/lib/page-object/elements/bold.rb +11 -0
- data/lib/page-object/elements/button.rb +35 -0
- data/lib/page-object/elements/canvas.rb +23 -0
- data/lib/page-object/elements/check_box.rb +37 -0
- data/lib/page-object/elements/div.rb +19 -0
- data/lib/page-object/elements/element.rb +226 -0
- data/lib/page-object/elements/file_field.rb +38 -0
- data/lib/page-object/elements/form.rb +36 -0
- data/lib/page-object/elements/heading.rb +15 -0
- data/lib/page-object/elements/hidden_field.rb +22 -0
- data/lib/page-object/elements/image.rb +36 -0
- data/lib/page-object/elements/label.rb +19 -0
- data/lib/page-object/elements/link.rb +46 -0
- data/lib/page-object/elements/list_item.rb +19 -0
- data/lib/page-object/elements/media.rb +45 -0
- data/lib/page-object/elements/option.rb +10 -0
- data/lib/page-object/elements/ordered_list.rb +50 -0
- data/lib/page-object/elements/paragraph.rb +9 -0
- data/lib/page-object/elements/radio_button.rb +37 -0
- data/lib/page-object/elements/select_list.rb +42 -0
- data/lib/page-object/elements/span.rb +19 -0
- data/lib/page-object/elements/table.rb +79 -0
- data/lib/page-object/elements/table_cell.rb +28 -0
- data/lib/page-object/elements/table_row.rb +50 -0
- data/lib/page-object/elements/text_area.rb +38 -0
- data/lib/page-object/elements/text_field.rb +42 -0
- data/lib/page-object/elements/unordered_list.rb +51 -0
- data/lib/page-object/elements/video.rb +18 -0
- data/lib/page-object/indexed_properties.rb +40 -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/loads_platform.rb +45 -0
- data/lib/page-object/locator_generator.rb +131 -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 +83 -0
- data/lib/page-object/platforms.rb +18 -0
- data/lib/page-object/platforms/selenium_webdriver.rb +30 -0
- data/lib/page-object/platforms/selenium_webdriver/button.rb +15 -0
- data/lib/page-object/platforms/selenium_webdriver/check_box.rb +29 -0
- data/lib/page-object/platforms/selenium_webdriver/element.rb +291 -0
- data/lib/page-object/platforms/selenium_webdriver/file_field.rb +16 -0
- data/lib/page-object/platforms/selenium_webdriver/form.rb +16 -0
- data/lib/page-object/platforms/selenium_webdriver/image.rb +28 -0
- data/lib/page-object/platforms/selenium_webdriver/link.rb +23 -0
- data/lib/page-object/platforms/selenium_webdriver/ordered_list.rb +39 -0
- data/lib/page-object/platforms/selenium_webdriver/page_object.rb +1237 -0
- data/lib/page-object/platforms/selenium_webdriver/radio_button.rb +22 -0
- data/lib/page-object/platforms/selenium_webdriver/select_list.rb +93 -0
- data/lib/page-object/platforms/selenium_webdriver/surrogate_selenium_element.rb +42 -0
- data/lib/page-object/platforms/selenium_webdriver/table.rb +42 -0
- data/lib/page-object/platforms/selenium_webdriver/table_row.rb +43 -0
- data/lib/page-object/platforms/selenium_webdriver/text_area.rb +17 -0
- data/lib/page-object/platforms/selenium_webdriver/text_field.rb +17 -0
- data/lib/page-object/platforms/selenium_webdriver/unordered_list.rb +39 -0
- data/lib/page-object/platforms/watir_webdriver.rb +30 -0
- data/lib/page-object/platforms/watir_webdriver/check_box.rb +29 -0
- data/lib/page-object/platforms/watir_webdriver/element.rb +249 -0
- data/lib/page-object/platforms/watir_webdriver/file_field.rb +16 -0
- data/lib/page-object/platforms/watir_webdriver/form.rb +16 -0
- data/lib/page-object/platforms/watir_webdriver/image.rb +22 -0
- data/lib/page-object/platforms/watir_webdriver/link.rb +15 -0
- data/lib/page-object/platforms/watir_webdriver/ordered_list.rb +35 -0
- data/lib/page-object/platforms/watir_webdriver/page_object.rb +1082 -0
- data/lib/page-object/platforms/watir_webdriver/radio_button.rb +22 -0
- data/lib/page-object/platforms/watir_webdriver/select_list.rb +74 -0
- data/lib/page-object/platforms/watir_webdriver/table.rb +38 -0
- data/lib/page-object/platforms/watir_webdriver/table_row.rb +37 -0
- data/lib/page-object/platforms/watir_webdriver/text_area.rb +23 -0
- data/lib/page-object/platforms/watir_webdriver/text_field.rb +16 -0
- data/lib/page-object/platforms/watir_webdriver/unordered_list.rb +36 -0
- data/lib/page-object/sections.rb +29 -0
- data/lib/page-object/version.rb +4 -0
- data/lib/page-object/widgets.rb +133 -0
- data/page_object.gemspec +31 -0
- data/pageobject.gems +1 -0
- data/spec/page-object/accessors_spec.rb +40 -0
- data/spec/page-object/element_locators_spec.rb +1122 -0
- data/spec/page-object/elements/area_spec.rb +45 -0
- data/spec/page-object/elements/bold_spec.rb +29 -0
- data/spec/page-object/elements/button_spec.rb +64 -0
- data/spec/page-object/elements/canvas_spec.rb +40 -0
- data/spec/page-object/elements/check_box_spec.rb +49 -0
- data/spec/page-object/elements/div_spec.rb +28 -0
- data/spec/page-object/elements/element_spec.rb +114 -0
- data/spec/page-object/elements/file_field_spec.rb +39 -0
- data/spec/page-object/elements/form_spec.rb +28 -0
- data/spec/page-object/elements/heading_spec.rb +48 -0
- data/spec/page-object/elements/hidden_field_spec.rb +28 -0
- data/spec/page-object/elements/image_spec.rb +66 -0
- data/spec/page-object/elements/label_spec.rb +29 -0
- data/spec/page-object/elements/link_spec.rb +49 -0
- data/spec/page-object/elements/list_item_spec.rb +29 -0
- data/spec/page-object/elements/nested_element_spec.rb +254 -0
- data/spec/page-object/elements/option_spec.rb +11 -0
- data/spec/page-object/elements/ordered_list_spec.rb +94 -0
- data/spec/page-object/elements/paragraph_spec.rb +27 -0
- data/spec/page-object/elements/select_list_spec.rb +142 -0
- data/spec/page-object/elements/selenium/radio_button_spec.rb +44 -0
- data/spec/page-object/elements/selenium/text_field_spec.rb +49 -0
- data/spec/page-object/elements/selenium_element_spec.rb +177 -0
- data/spec/page-object/elements/span_spec.rb +26 -0
- data/spec/page-object/elements/table_cell_spec.rb +21 -0
- data/spec/page-object/elements/table_row_spec.rb +70 -0
- data/spec/page-object/elements/table_spec.rb +98 -0
- data/spec/page-object/elements/text_area_spec.rb +39 -0
- data/spec/page-object/elements/unordered_list_spec.rb +94 -0
- data/spec/page-object/elements/watir_element_spec.rb +145 -0
- data/spec/page-object/javascript_framework_facade_spec.rb +61 -0
- data/spec/page-object/loads_platform_spec.rb +53 -0
- data/spec/page-object/page-object_spec.rb +407 -0
- data/spec/page-object/page_factory_spec.rb +238 -0
- data/spec/page-object/page_populator_spec.rb +122 -0
- data/spec/page-object/page_section_spec.rb +73 -0
- data/spec/page-object/platforms/selenium_webdriver/selenium_page_object_spec.rb +68 -0
- data/spec/page-object/platforms/selenium_webdriver_spec.rb +29 -0
- data/spec/page-object/platforms/watir_webdriver/watir_page_object_spec.rb +29 -0
- data/spec/page-object/platforms/watir_webdriver_spec.rb +9 -0
- data/spec/page-object/selenium_accessors_spec.rb +609 -0
- data/spec/page-object/watir_accessors_spec.rb +1134 -0
- data/spec/page-object/widget_spec.rb +226 -0
- data/spec/spec_helper.rb +47 -0
- metadata +601 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
require 'selenium/webdriver/remote/http/persistent'
|
|
2
|
+
|
|
3
|
+
module PageObject
|
|
4
|
+
module PersistantBrowser
|
|
5
|
+
@@browser = false
|
|
6
|
+
def self.get_browser
|
|
7
|
+
if !@@browser
|
|
8
|
+
target = ENV['BROWSER']
|
|
9
|
+
target = 'firefox_local' unless target
|
|
10
|
+
|
|
11
|
+
if is_remote?(target)
|
|
12
|
+
require File.dirname(__FILE__) + "/targets/#{target}"
|
|
13
|
+
extend Target
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
@@browser = watir_browser(target) if ENV['DRIVER'] == 'WATIR'
|
|
17
|
+
@@browser = selenium_browser(target) if ENV['DRIVER'] == 'SELENIUM'
|
|
18
|
+
end
|
|
19
|
+
@@browser
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def self.quit
|
|
23
|
+
@@browser.quit
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
private
|
|
27
|
+
|
|
28
|
+
def self.is_remote?(target)
|
|
29
|
+
not target.include? 'local'
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def self.watir_browser(target)
|
|
33
|
+
if is_remote?(target)
|
|
34
|
+
Watir::Browser.new(:remote,
|
|
35
|
+
:http_client => client,
|
|
36
|
+
:url => url,
|
|
37
|
+
:desired_capabilities => desired_capabilities)
|
|
38
|
+
else
|
|
39
|
+
Watir::Browser.new :firefox, :http_client => client
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def self.selenium_browser(target)
|
|
44
|
+
if is_remote?(target)
|
|
45
|
+
Selenium::WebDriver.for(:remote,
|
|
46
|
+
:http_client => client,
|
|
47
|
+
:url => url,
|
|
48
|
+
:desired_capabilities => desired_capabilities)
|
|
49
|
+
else
|
|
50
|
+
Selenium::WebDriver.for :firefox, :http_client => client
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def self.client
|
|
55
|
+
Selenium::WebDriver::Remote::Http::Persistent.new
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def self.capabilities(browser, version, platform, name)
|
|
59
|
+
caps = Selenium::WebDriver::Remote::Capabilities.send browser
|
|
60
|
+
caps.version = version
|
|
61
|
+
caps.platform = platform
|
|
62
|
+
caps[:name] = name
|
|
63
|
+
caps
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def self.url
|
|
67
|
+
"http://pageobject:18002ee8-963b-472e-9425-2baf0a2b6d95@ondemand.saucelabs.com:80/wd/hub"
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
module UrlHelper
|
|
2
|
+
class << self
|
|
3
|
+
def html
|
|
4
|
+
File.expand_path("#{File.dirname(__FILE__)}/../html")
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def files
|
|
8
|
+
target = ENV['BROWSER']
|
|
9
|
+
return "file://#{html}" if target.nil? or target.include? 'local'
|
|
10
|
+
'http://ec2-107-22-131-88.compute-1.amazonaws.com'
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def static_elements
|
|
14
|
+
"#{files}/static_elements.html"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def frame_elements
|
|
18
|
+
"#{files}/frames.html"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def iframe_elements
|
|
22
|
+
"#{files}/iframes.html"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def nested_frame_elements
|
|
26
|
+
"#{files}/nested_frames.html"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def nested_elements
|
|
30
|
+
"#{files}/nested_elements.html"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def modal
|
|
34
|
+
"#{files}/modal.html"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def async
|
|
38
|
+
"#{files}/async.html"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def multi
|
|
42
|
+
"#{files}/multi_elements.html"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def indexed
|
|
46
|
+
"#{files}/indexed_property.html"
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def hover
|
|
50
|
+
"#{files}/hover.html"
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def double_click
|
|
54
|
+
"#{files}/double_click.html"
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
Feature: Table
|
|
2
|
+
In order to interact with tables
|
|
3
|
+
Testers will need access and interrogation ability
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
Background:
|
|
7
|
+
Given I am on the static elements page
|
|
8
|
+
|
|
9
|
+
Scenario: Retrieve a table
|
|
10
|
+
When I retrieve a table element
|
|
11
|
+
Then I should know it is visible
|
|
12
|
+
|
|
13
|
+
Scenario: Determine if a table exists
|
|
14
|
+
When I retrieve a table element
|
|
15
|
+
Then I should know it exists
|
|
16
|
+
|
|
17
|
+
Scenario: Retrieve the data from a table
|
|
18
|
+
When I retrieve a table element
|
|
19
|
+
Then the data for row "2" should be "Data1" and "Data2"
|
|
20
|
+
And the data for row "3" should be "Data3" and "Data4"
|
|
21
|
+
And the table should have "3" rows
|
|
22
|
+
And row "2" should have "2" columns
|
|
23
|
+
And the data for the second row should be "Data1" and "Data2"
|
|
24
|
+
And the data for the last row should be "Data3" and "Data4"
|
|
25
|
+
|
|
26
|
+
Scenario: Retrieve data from a table using a row header
|
|
27
|
+
When I retrieve a table element
|
|
28
|
+
Then the data for row "Data3" should be "Data3" and "Data4"
|
|
29
|
+
|
|
30
|
+
Scenario: Retrieve data from a table using a partial row header
|
|
31
|
+
When I retrieve a table element
|
|
32
|
+
Then the data for row "ata3" should be "Data3" and "Data4"
|
|
33
|
+
|
|
34
|
+
Scenario: Retrieve data from a table using a row header in the 2nd column
|
|
35
|
+
When I retrieve a table element
|
|
36
|
+
Then the data for row "Data4" should be "Data3" and "Data4"
|
|
37
|
+
|
|
38
|
+
Scenario: Retrieve data from a table using a partial row header in the 2nd column
|
|
39
|
+
When I retrieve a table element
|
|
40
|
+
Then the data for row "ata4" should be "Data3" and "Data4"
|
|
41
|
+
|
|
42
|
+
Scenario: Retrieve data from a table using a column header
|
|
43
|
+
When I retrieve a table element
|
|
44
|
+
Then the data for column "Header" and row "3" should be "Data4"
|
|
45
|
+
|
|
46
|
+
Scenario: Retrieve data from a table with a thead using a column header
|
|
47
|
+
When I retrieve a table with thead element
|
|
48
|
+
Then the data for column "Col1" and row "2" should be "Data1"
|
|
49
|
+
|
|
50
|
+
Scenario: Retrieve data from the first row of a table with a thead using a column header
|
|
51
|
+
When I retrieve a table with thead element
|
|
52
|
+
Then the data for column "Col1" and row "1" should be "Col1"
|
|
53
|
+
|
|
54
|
+
Scenario: Retrieve data from a table using a partial column header
|
|
55
|
+
When I retrieve a table element
|
|
56
|
+
Then the data for column "eader" and row "3" should be "Data4"
|
|
57
|
+
|
|
58
|
+
Scenario: Retrieve data from a table using both headers
|
|
59
|
+
When I retrieve a table element
|
|
60
|
+
Then the data for row "Data3" and column "eader" should be "Data4"
|
|
61
|
+
|
|
62
|
+
Scenario: Retrieve data from a table with an incorrect row header
|
|
63
|
+
When I retrieve a table element
|
|
64
|
+
Then the data for row "Data20" should be nil
|
|
65
|
+
|
|
66
|
+
Scenario: Retrieve data from a table with an incorrect column header
|
|
67
|
+
When I retrieve a table element
|
|
68
|
+
Then the data for row "Data3" and column "Data20" should be nil
|
|
69
|
+
|
|
70
|
+
Scenario: Retrieve data from a table that does not have a cell which corresponds to a column header
|
|
71
|
+
When I retrieve a table with thead element
|
|
72
|
+
Then the data for row "Data5" and column "Col2" should be nil
|
|
73
|
+
|
|
74
|
+
Scenario Outline: Locating table cells on the Page
|
|
75
|
+
When I retrieve a table element by "<search_by>"
|
|
76
|
+
Then the data for row "2" should be "Data1" and "Data2"
|
|
77
|
+
|
|
78
|
+
Scenarios:
|
|
79
|
+
| search_by |
|
|
80
|
+
| id |
|
|
81
|
+
| class |
|
|
82
|
+
| xpath |
|
|
83
|
+
| index |
|
|
84
|
+
| name |
|
|
85
|
+
|
|
86
|
+
Scenario: Matching the expected table with the table on the Page
|
|
87
|
+
When I retrieve a table element
|
|
88
|
+
Then the table should be like the expected one
|
|
89
|
+
| Table | Header |
|
|
90
|
+
| Data1 | Data2 |
|
|
91
|
+
| Data3 | Data4 |
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
@selenium_only
|
|
95
|
+
Scenario Outline: Locating table cells on the Page
|
|
96
|
+
When I retrieve a table element by "<search_by>"
|
|
97
|
+
Then the data for row "2" should be "Data1" and "Data2"
|
|
98
|
+
|
|
99
|
+
Scenarios:
|
|
100
|
+
| search_by |
|
|
101
|
+
| css |
|
|
102
|
+
|
|
103
|
+
Scenario Outline: Locating table using multiple parameters
|
|
104
|
+
When I retrieve a table element by "<param1>" and "<param2>"
|
|
105
|
+
Then the data for row "2" should be "Data1" and "Data2"
|
|
106
|
+
|
|
107
|
+
Scenarios:
|
|
108
|
+
| param1 | param2 |
|
|
109
|
+
| class | index |
|
|
110
|
+
| name | index |
|
|
111
|
+
|
|
112
|
+
Scenario: Finding a table dynamically
|
|
113
|
+
When I retrieve a table element while the script is executing
|
|
114
|
+
And the data for row "2" should be "Data1" and "Data2"
|
|
115
|
+
|
|
116
|
+
@watir_only
|
|
117
|
+
Scenario: Finding an existing table
|
|
118
|
+
Then I should see that the table exists
|
|
119
|
+
|
|
120
|
+
Scenario: Getting the text from a table
|
|
121
|
+
Then I should see the text includes "Data1" when I retrieve it by "id"
|
|
122
|
+
And I should see the text includes "Data2" when I retrieve it by "id"
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
Feature: Table Cell
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
Background:
|
|
5
|
+
Given I am on the static elements page
|
|
6
|
+
|
|
7
|
+
Scenario: Retrieving the text from a table cell
|
|
8
|
+
When I retrieve the data from the table cell
|
|
9
|
+
Then the cell data should be 'Data4'
|
|
10
|
+
|
|
11
|
+
Scenario Outline: Locating table cells on the Page
|
|
12
|
+
When I search for the table cell by "<search_by>"
|
|
13
|
+
Then the cell data should be 'Data4'
|
|
14
|
+
|
|
15
|
+
Scenarios:
|
|
16
|
+
| search_by |
|
|
17
|
+
| id |
|
|
18
|
+
| class |
|
|
19
|
+
| xpath |
|
|
20
|
+
| name |
|
|
21
|
+
| text |
|
|
22
|
+
| css |
|
|
23
|
+
|
|
24
|
+
@watir_only
|
|
25
|
+
Scenario Outline: Locating table cells on the Page with watir
|
|
26
|
+
When I search for the table cell by "<search_by>"
|
|
27
|
+
Then the cell data should be 'Data4'
|
|
28
|
+
|
|
29
|
+
Scenarios:
|
|
30
|
+
| search_by |
|
|
31
|
+
| index |
|
|
32
|
+
|
|
33
|
+
Scenario Outline: Locating table cell using multiple parameters
|
|
34
|
+
When I retrieve a table cell element by "<param1>" and "<param2>"
|
|
35
|
+
Then the cell data should be 'Data4'
|
|
36
|
+
|
|
37
|
+
Scenarios:
|
|
38
|
+
| param1 | param2 |
|
|
39
|
+
| class | index |
|
|
40
|
+
| name | index |
|
|
41
|
+
|
|
42
|
+
Scenario: Finding a table cell dynamically
|
|
43
|
+
When I retrieve a table cell element while the script is executing
|
|
44
|
+
Then I should see that the cell exists
|
|
45
|
+
And the cell data should be 'Data4'
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
Feature: Table Row
|
|
2
|
+
|
|
3
|
+
Background:
|
|
4
|
+
Given I am on the static elements page
|
|
5
|
+
|
|
6
|
+
Scenario: Retrieving the text from a table row
|
|
7
|
+
When I retrieve the data from the table row
|
|
8
|
+
Then the row data should be 'Data1 Data2'
|
|
9
|
+
|
|
10
|
+
Scenario Outline: Locating table rows on the Page
|
|
11
|
+
When I search for the table row by "<search_by>"
|
|
12
|
+
Then the row data should be 'Data1 Data2'
|
|
13
|
+
|
|
14
|
+
Scenarios:
|
|
15
|
+
| search_by |
|
|
16
|
+
| id |
|
|
17
|
+
| class |
|
|
18
|
+
| xpath |
|
|
19
|
+
| css |
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@watir_only
|
|
23
|
+
Scenario: Locating table rows on the Page by text
|
|
24
|
+
When I search for the table row by "text"
|
|
25
|
+
Then the row data should be 'Data1 Data2'
|
|
26
|
+
|
|
27
|
+
@watir_only
|
|
28
|
+
Scenario Outline: Locating table rows on the Page with watir
|
|
29
|
+
When I search for the table row by "<search_by>"
|
|
30
|
+
Then the row data should be 'Data1 Data2'
|
|
31
|
+
|
|
32
|
+
Scenarios:
|
|
33
|
+
| search_by |
|
|
34
|
+
| index |
|
|
35
|
+
|
|
36
|
+
Scenario: Locating table row using multiple parameters
|
|
37
|
+
When I retrieve a table row element by "class" and "index"
|
|
38
|
+
Then the row data should be 'Data1 Data2'
|
|
39
|
+
|
|
40
|
+
Scenario: Finding a table row dynamically
|
|
41
|
+
When I retrieve a table row element while the script is executing
|
|
42
|
+
Then I should see that the row exists
|
|
43
|
+
And the row data should be 'Data1 Data2'
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
Feature: Text Area
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
Background:
|
|
5
|
+
Given I am on the static elements page
|
|
6
|
+
|
|
7
|
+
Scenario: Setting and getting a value from a text area
|
|
8
|
+
When I type "abcdefghijklmnop" into the text area
|
|
9
|
+
Then the text area should contain "abcdefghijklmnop"
|
|
10
|
+
|
|
11
|
+
Scenario Outline: Locating text area on the Page
|
|
12
|
+
When I search for the text area by "<search_by>"
|
|
13
|
+
Then I should be able to type "I found it" into the area
|
|
14
|
+
|
|
15
|
+
Scenarios:
|
|
16
|
+
| search_by |
|
|
17
|
+
| id |
|
|
18
|
+
| class |
|
|
19
|
+
| name |
|
|
20
|
+
| xpath |
|
|
21
|
+
| index |
|
|
22
|
+
| label |
|
|
23
|
+
|
|
24
|
+
@selenium_only
|
|
25
|
+
Scenario Outline: Locating text area on the Page
|
|
26
|
+
When I search for the text area by "<search_by>"
|
|
27
|
+
Then I should be able to type "I found it" into the area
|
|
28
|
+
|
|
29
|
+
Scenarios:
|
|
30
|
+
| search_by |
|
|
31
|
+
| css |
|
|
32
|
+
|
|
33
|
+
Scenario Outline: Locating a text area using multiple parameters
|
|
34
|
+
When I search for the text area by "<param1>" and "<param2>"
|
|
35
|
+
Then I should be able to type "I found it" into the area
|
|
36
|
+
|
|
37
|
+
Scenarios:
|
|
38
|
+
| param1 | param2 |
|
|
39
|
+
| class | index |
|
|
40
|
+
| name | index |
|
|
41
|
+
|
|
42
|
+
Scenario: Finding a text area dynamically
|
|
43
|
+
When I find a text area while the script is executing
|
|
44
|
+
Then I should see that the text area exists
|
|
45
|
+
And I should be able to type "I found it" into the area element
|
|
46
|
+
|
|
47
|
+
Scenario: Clearing the text area
|
|
48
|
+
When I type "abcdefghijklmnop" into the text area
|
|
49
|
+
Then the text area should contain "abcdefghijklmnop"
|
|
50
|
+
When I clear the text area
|
|
51
|
+
Then the text area should contain ""
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
Feature: Text Fields
|
|
2
|
+
In order to interact with text fields
|
|
3
|
+
Testers will need access and interrogation ability
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
Background:
|
|
7
|
+
Given I am on the static elements page
|
|
8
|
+
|
|
9
|
+
Scenario: Setting and getting a value from a text field
|
|
10
|
+
When I type "abcDEF" into the text field
|
|
11
|
+
Then the text field should contain "abcDEF"
|
|
12
|
+
|
|
13
|
+
Scenario Outline: Locating text fields on the Page
|
|
14
|
+
When I search for the text field by "<search_by>"
|
|
15
|
+
Then I should be able to type "I found it" into the field
|
|
16
|
+
|
|
17
|
+
Examples:
|
|
18
|
+
| search_by |
|
|
19
|
+
| id |
|
|
20
|
+
| class |
|
|
21
|
+
| name |
|
|
22
|
+
| xpath |
|
|
23
|
+
| index |
|
|
24
|
+
| title |
|
|
25
|
+
| text |
|
|
26
|
+
| label |
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@watir_only
|
|
30
|
+
Scenario Outline: Locating text fields on the Page using Watir
|
|
31
|
+
When I search for the text field by "<search_by>"
|
|
32
|
+
Then I should be able to type "I found it" into the field
|
|
33
|
+
Examples:
|
|
34
|
+
| search_by |
|
|
35
|
+
| data_field |
|
|
36
|
+
|
|
37
|
+
@selenium_only
|
|
38
|
+
Scenario Outline: Locating text fields on the Page using Selenium
|
|
39
|
+
When I search for the text field by "<search_by>"
|
|
40
|
+
Then I should be able to type "I found it" into the field
|
|
41
|
+
|
|
42
|
+
Examples:
|
|
43
|
+
| search_by |
|
|
44
|
+
| css |
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
Scenario Outline: Locating a text field using multiple parameters
|
|
48
|
+
When I search for the text field by "<param1>" and "<param2>"
|
|
49
|
+
Then I should be able to type "I found it" into the field
|
|
50
|
+
|
|
51
|
+
Examples:
|
|
52
|
+
| param1 | param2 |
|
|
53
|
+
| class | index |
|
|
54
|
+
| name | index |
|
|
55
|
+
|
|
56
|
+
Scenario: Retrieve a text field
|
|
57
|
+
When I retrieve a text field
|
|
58
|
+
Then I should know it exists
|
|
59
|
+
And I should know it is visible
|
|
60
|
+
|
|
61
|
+
Scenario: Finding a text field dynamically
|
|
62
|
+
When I find a text field while the script is executing
|
|
63
|
+
Then I should see that the text field exists
|
|
64
|
+
And I should be able to type "I found it" into the field element
|
|
65
|
+
|
|
66
|
+
Scenario: Appending text to a text field
|
|
67
|
+
When I type "abcd" into the text field
|
|
68
|
+
And I append "efg" to the text field
|
|
69
|
+
Then the text field should contain "abcdefg"
|
|
70
|
+
|