Module: PageObject::Accessors
- Defined in:
- lib/page-object/accessors.rb
Overview
Contains the class level methods that are inserted into your page objects when you include the PageObject module. These methods will generate another set of methods that provide access to the elements on the web pages.
Instance Method Summary collapse
-
#area(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to click the area, another to return the area element, and another to check the area’s existence.
-
#audio(name, identifier = {:index => 0}, &block) ⇒ Object
adds two methods - one to return the audio element and another to check the audio’s existence.
-
#b(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to retrieve the text of a b element, another to retrieve a b element, and another to check for it’s existence.
-
#button(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to click a button, another to return the button element, and another to check the button’s existence.
-
#canvas(name, identifier = {:index => 0}, &block) ⇒ Object
adds two methods - one to return the canvas element and another to check the canvas’s existence.
-
#cell(name, identifier = {:index => 0}, &block) ⇒ Object
(also: #td)
adds three methods - one to retrieve the text from a table cell, another to return the table cell element, and another to check the cell’s existence.
-
#checkbox(name, identifier = {:index => 0}, &block) ⇒ Object
adds five methods - one to check, another to uncheck, another to return the state of a checkbox, another to return a PageObject::Elements::CheckBox object representing the checkbox, and a final method to check the checkbox’s existence.
-
#div(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to retrieve the text from a div, another to return the div element, and another to check the div’s existence.
-
#element(name, tag = :element, identifier = { :index => 0 }, &block) ⇒ Object
adds three methods - one to retrieve the text of an element, another to retrieve an element, and another to check the element’s existence.
-
#elements(name, tag = :element, identifier = {:index => 0}, &block) ⇒ Object
adds a method to return a collection of generic Element objects for a specific tag.
-
#expected_element(element_name, timeout = ::PageObject.default_element_wait) ⇒ boolean
Creates a method that provides a way to initialize a page based upon an expected element.
-
#expected_element_visible(element_name, timeout = ::PageObject.default_element_wait, check_visible = false) ⇒ boolean
Creates a method that provides a way to initialize a page based upon an expected element to become visible.
-
#expected_title(expected_title) ⇒ boolean
Creates a method that compares the expected_title of a page against the actual.
-
#file_field(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to set the file for a file field, another to retrieve the file field element, and another to check it’s existence.
-
#form(name, identifier = {:index => 0}, &block) ⇒ Object
adds two methods - one to retrieve the form element, and another to check the form’s existence.
-
#h1(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to retrieve the text of a h1 element, another to retrieve a h1 element, and another to check for it’s existence.
-
#h2(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to retrieve the text of a h2 element, another to retrieve a h2 element, and another to check for it’s existence.
-
#h3(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to retrieve the text of a h3 element, another to return a h3 element, and another to check for it’s existence.
-
#h4(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to retrieve the text of a h4 element, another to return a h4 element, and another to check for it’s existence.
-
#h5(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to retrieve the text of a h5 element, another to return a h5 element, and another to check for it’s existence.
-
#h6(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to retrieve the text of a h6 element, another to return a h6 element, and another to check for it’s existence.
-
#hidden_field(name, identifier = {:index => 0}, &block) ⇒ Object
(also: #hidden)
adds three methods to the page object - one to get the text from a hidden field, another to retrieve the hidden field element, and another to check the hidden field’s existence.
-
#image(name, identifier = {:index => 0}, &block) ⇒ Object
(also: #img)
adds two methods - one to retrieve the image element, and another to check the image’s existence.
-
#in_frame(identifier, frame = nil, &block) ⇒ Object
Identify an element as existing within a frame .
-
#in_iframe(identifier, frame = nil, &block) ⇒ Object
Identify an element as existing within an iframe.
-
#indexed_property(name, identifier_list) ⇒ Object
adds a method that will return an indexed property.
-
#label(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to retrieve the text from a label, another to return the label element, and another to check the label’s existence.
-
#link(name, identifier = {:index => 0}, &block) ⇒ Object
(also: #a)
adds three methods - one to select a link, another to return a PageObject::Elements::Link object representing the link, and another that checks the link’s existence.
-
#list_item(name, identifier = {:index => 0}, &block) ⇒ Object
(also: #li)
adds three methods - one to retrieve the text from a list item, another to return the list item element, and another to check the list item’s existence.
-
#ordered_list(name, identifier = {:index => 0}, &block) ⇒ Object
(also: #ol)
adds three methods - one to return the text within the ordered list, one to retrieve the ordered list element, and another to test it’s existence.
-
#page_section(name, section_class, identifier) ⇒ Object
adds a method to return a page object rooted at an element.
-
#page_sections(name, section_class, identifier) ⇒ Object
adds a method to return a collection of page objects rooted at elements.
-
#page_url(url) ⇒ Object
(also: #direct_url)
Specify the url for the page.
-
#paragraph(name, identifier = {:index => 0}, &block) ⇒ Object
(also: #p)
adds three methods - one to retrieve the text of a paragraph, another to retrieve a paragraph element, and another to check the paragraph’s existence.
-
#params ⇒ Object
Return the params that exist on this page class.
-
#params=(the_params) ⇒ Object
Set some values that can be used within the class.
-
#radio_button(name, identifier = {:index => 0}, &block) ⇒ Object
(also: #radio)
adds four methods - one to select, another to return if a radio button is selected, another method to return a PageObject::Elements::RadioButton object representing the radio button element, and another to check the radio button’s existence.
-
#radio_button_group(name, identifier) ⇒ Object
(also: #radio_group)
adds five methods to help interact with a radio button group - a method to select a radio button in the group by given value/text, a method to return the values of all radio buttons in the group, a method to return if a radio button in the group is selected (will return the text of the selected radio button, if true), a method to return an array of PageObject::Elements::RadioButton objects representing the radio button group, and finally a method to check the existence of the radio button group.
-
#row(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to retrieve the text from a table row, another to return the table row element, and another to check the row’s existence.
-
#select_list(name, identifier = {:index => 0}, &block) ⇒ Object
(also: #select)
adds five methods - one to select an item in a drop-down, another to fetch the currently selected item text, another to retrieve the select list element, another to check the drop down’s existence and another to get all the available options to select from.
-
#span(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to retrieve the text from a span, another to return the span element, and another to check the span’s existence.
- #standard_methods(name, identifier, method, &block) ⇒ Object
-
#svg(name, identifier = {:index => 0}, &block) ⇒ Object
adds two methods - one to retrieve a svg, and another to check the svg’s existence.
-
#table(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to return the text for the table, one to retrieve the table element, and another to check the table’s existence.
-
#text_area(name, identifier = {:index => 0}, &block) ⇒ Object
(also: #textarea)
adds four methods to the page object - one to set text in a text area, another to retrieve text from a text area, another to return the text area element, and another to check the text area’s existence.
-
#text_field(name, identifier = {:index => 0}, &block) ⇒ Object
adds four methods to the page object - one to set text in a text field, another to retrieve text from a text field, another to return the text field element, another to check the text field’s existence.
-
#unordered_list(name, identifier = {:index => 0}, &block) ⇒ Object
(also: #ul)
adds three methods - one to return the text within the unordered list, one to retrieve the unordered list element, and another to check it’s existence.
-
#video(name, identifier = {:index => 0}, &block) ⇒ Object
adds two methods - one to return the video element and another to check the video’s existence.
-
#wait_for_expected_title(expected_title, timeout = ::PageObject.default_element_wait) ⇒ boolean
Creates a method that waits the expected_title of a page to match the actual.
Instance Method Details
#area(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to click the area, another to return the area element, and another to check the area’s existence.
1074 1075 1076 1077 1078 1079 1080 |
# File 'lib/page-object/accessors.rb', line 1074 def area(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'area_for', &block) define_method(name) do return platform.click_area_for identifier.clone unless block_given? self.send("#{name}_element").click end end |
#audio(name, identifier = {:index => 0}, &block) ⇒ Object
adds two methods - one to return the audio element and another to check the audio’s existence.
1124 1125 1126 |
# File 'lib/page-object/accessors.rb', line 1124 def audio(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'audio_for', &block) end |
#b(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to retrieve the text of a b element, another to retrieve a b element, and another to check for it’s existence.
1170 1171 1172 1173 1174 1175 1176 |
# File 'lib/page-object/accessors.rb', line 1170 def b(name, identifier={:index => 0}, &block) standard_methods(name, identifier,'b_for', &block) define_method(name) do return platform.b_text_for identifier.clone unless block_given? self.send("#{name}_element").text end end |
#button(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to click a button, another to return the button element, and another to check the button’s existence.
514 515 516 517 518 519 520 |
# File 'lib/page-object/accessors.rb', line 514 def (name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'button_for', &block) define_method(name) do return platform. identifier.clone unless block_given? self.send("#{name}_element").click end end |
#canvas(name, identifier = {:index => 0}, &block) ⇒ Object
adds two methods - one to return the canvas element and another to check the canvas’s existence.
1101 1102 1103 |
# File 'lib/page-object/accessors.rb', line 1101 def canvas(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'canvas_for', &block) end |
#cell(name, identifier = {:index => 0}, &block) ⇒ Object Also known as: td
adds three methods - one to retrieve the text from a table cell, another to return the table cell element, and another to check the cell’s existence.
631 632 633 634 635 636 637 |
# File 'lib/page-object/accessors.rb', line 631 def cell(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'cell_for', &block) define_method("#{name}") do return platform.cell_text_for identifier.clone unless block_given? self.send("#{name}_element").text end end |
#checkbox(name, identifier = {:index => 0}, &block) ⇒ Object
adds five methods - one to check, another to uncheck, another to return the state of a checkbox, another to return a PageObject::Elements::CheckBox object representing the checkbox, and a final method to check the checkbox’s existence.
388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 |
# File 'lib/page-object/accessors.rb', line 388 def checkbox(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'checkbox_for', &block) define_method("check_#{name}") do return platform.check_checkbox(identifier.clone) unless block_given? self.send("#{name}_element").check end define_method("uncheck_#{name}") do return platform.uncheck_checkbox(identifier.clone) unless block_given? self.send("#{name}_element").uncheck end define_method("#{name}_checked?") do return platform.checkbox_checked?(identifier.clone) unless block_given? self.send("#{name}_element").checked? end end |
#div(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to retrieve the text from a div, another to return the div element, and another to check the div’s existence.
543 544 545 546 547 548 549 |
# File 'lib/page-object/accessors.rb', line 543 def div(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'div_for', &block) define_method(name) do return platform.div_text_for identifier.clone unless block_given? self.send("#{name}_element").text end end |
#element(name, tag = :element, identifier = { :index => 0 }, &block) ⇒ Object
adds three methods - one to retrieve the text of an element, another to retrieve an element, and another to check the element’s existence.
1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 |
# File 'lib/page-object/accessors.rb', line 1222 def element(name, tag=:element, identifier={ :index => 0 }, &block) # default tag to :element # # element 'button', css: 'some css' # # is the same as # # element 'button', :element, css: 'some css' # if tag.is_a?(Hash) identifier = tag tag = :element end define_method("#{name}") do self.send("#{name}_element").text end define_method("#{name}_element") do return call_block(&block) if block_given? platform.element_for(tag, identifier.clone) end define_method("#{name}?") do self.send("#{name}_element").exists? end end |
#elements(name, tag = :element, identifier = {:index => 0}, &block) ⇒ Object
adds a method to return a collection of generic Element objects for a specific tag.
1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 |
# File 'lib/page-object/accessors.rb', line 1268 def elements(name, tag=:element, identifier={:index => 0}, &block) # default tag to :element # # elements 'button', css: 'some css' # # is the same as # # elements 'button', :element, css: 'some css' # if tag.is_a?(Hash) identifier = tag tag = :element end define_method("#{name}_elements") do return call_block(&block) if block_given? platform.elements_for(tag, identifier.clone) end end |
#expected_element(element_name, timeout = ::PageObject.default_element_wait) ⇒ boolean
Creates a method that provides a way to initialize a page based upon an expected element. This is useful for pages that load dynamic content.
112 113 114 115 116 |
# File 'lib/page-object/accessors.rb', line 112 def expected_element(element_name, timeout=::PageObject.default_element_wait) define_method("has_expected_element?") do self.respond_to? "#{element_name}_element" and self.send("#{element_name}_element").when_present timeout end end |
#expected_element_visible(element_name, timeout = ::PageObject.default_element_wait, check_visible = false) ⇒ boolean
Creates a method that provides a way to initialize a page based upon an expected element to become visible. This is useful for pages that load dynamic content and might have hidden elements that are not shown.
130 131 132 133 134 135 |
# File 'lib/page-object/accessors.rb', line 130 def expected_element_visible(element_name, timeout=::PageObject.default_element_wait, check_visible=false) define_method("has_expected_element_visible?") do self.respond_to? "#{element_name}_element" and self.send("#{element_name}_element").when_present timeout self.respond_to? "#{element_name}_element" and self.send("#{element_name}_element").when_visible timeout end end |
#expected_title(expected_title) ⇒ boolean
Creates a method that compares the expected_title of a page against the actual.
92 93 94 95 96 97 98 99 |
# File 'lib/page-object/accessors.rb', line 92 def expected_title(expected_title) define_method("has_expected_title?") do page_title = title has_expected_title = (expected_title === page_title) raise "Expected title '#{expected_title}' instead of '#{page_title}'" unless has_expected_title has_expected_title end end |
#file_field(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to set the file for a file field, another to retrieve the file field element, and another to check it’s existence.
1018 1019 1020 1021 1022 1023 1024 |
# File 'lib/page-object/accessors.rb', line 1018 def file_field(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'file_field_for', &block) define_method("#{name}=") do |value| return platform.file_field_value_set(identifier.clone, value) unless block_given? self.send("#{name}_element").value = value end end |
#form(name, identifier = {:index => 0}, &block) ⇒ Object
adds two methods - one to retrieve the form element, and another to check the form’s existence.
715 716 717 |
# File 'lib/page-object/accessors.rb', line 715 def form(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'form_for', &block) end |
#h1(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to retrieve the text of a h1 element, another to retrieve a h1 element, and another to check for it’s existence.
826 827 828 829 830 831 832 |
# File 'lib/page-object/accessors.rb', line 826 def h1(name, identifier={:index => 0}, &block) standard_methods(name, identifier,'h1_for', &block) define_method(name) do return platform.h1_text_for identifier.clone unless block_given? self.send("#{name}_element").text end end |
#h2(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to retrieve the text of a h2 element, another to retrieve a h2 element, and another to check for it’s existence.
853 854 855 856 857 858 859 |
# File 'lib/page-object/accessors.rb', line 853 def h2(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'h2_for', &block) define_method(name) do return platform.h2_text_for identifier.clone unless block_given? self.send("#{name}_element").text end end |
#h3(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to retrieve the text of a h3 element, another to return a h3 element, and another to check for it’s existence.
880 881 882 883 884 885 886 |
# File 'lib/page-object/accessors.rb', line 880 def h3(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'h3_for', &block) define_method(name) do return platform.h3_text_for identifier.clone unless block_given? self.send("#{name}_element").text end end |
#h4(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to retrieve the text of a h4 element, another to return a h4 element, and another to check for it’s existence.
907 908 909 910 911 912 913 |
# File 'lib/page-object/accessors.rb', line 907 def h4(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'h4_for', &block) define_method(name) do return platform.h4_text_for identifier.clone unless block_given? self.send("#{name}_element").text end end |
#h5(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to retrieve the text of a h5 element, another to return a h5 element, and another to check for it’s existence.
934 935 936 937 938 939 940 |
# File 'lib/page-object/accessors.rb', line 934 def h5(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'h5_for', &block) define_method(name) do return platform.h5_text_for identifier.clone unless block_given? self.send("#{name}_element").text end end |
#h6(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to retrieve the text of a h6 element, another to return a h6 element, and another to check for it’s existence.
961 962 963 964 965 966 967 |
# File 'lib/page-object/accessors.rb', line 961 def h6(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'h6_for', &block) define_method(name) do return platform.h6_text_for identifier.clone unless block_given? self.send("#{name}_element").text end end |
#hidden_field(name, identifier = {:index => 0}, &block) ⇒ Object Also known as:
adds three methods to the page object - one to get the text from a hidden field, another to retrieve the hidden field element, and another to check the hidden field’s existence.
244 245 246 247 248 249 250 |
# File 'lib/page-object/accessors.rb', line 244 def hidden_field(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'hidden_field_for', &block) define_method(name) do return platform.hidden_field_value_for identifier.clone unless block_given? self.send("#{name}_element").value end end |
#image(name, identifier = {:index => 0}, &block) ⇒ Object Also known as: img
adds two methods - one to retrieve the image element, and another to check the image’s existence.
691 692 693 |
# File 'lib/page-object/accessors.rb', line 691 def image(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'image_for', &block) end |
#in_frame(identifier, frame = nil, &block) ⇒ Object
Identify an element as existing within a frame . A frame parameter is passed to the block and must be passed to the other calls to PageObject. You can nest calls to in_frame by passing the frame to the next level.
155 156 157 158 159 |
# File 'lib/page-object/accessors.rb', line 155 def in_frame(identifier, frame=nil, &block) frame = [] if frame.nil? frame << {frame: identifier} block.call(frame) end |
#in_iframe(identifier, frame = nil, &block) ⇒ Object
Identify an element as existing within an iframe. A frame parameter is passed to the block and must be passed to the other calls to PageObject. You can nest calls to in_frame by passing the frame to the next level.
179 180 181 182 183 |
# File 'lib/page-object/accessors.rb', line 179 def in_iframe(identifier, frame=nil, &block) frame = [] if frame.nil? frame << {iframe: identifier} block.call(frame) end |
#indexed_property(name, identifier_list) ⇒ Object
adds a method that will return an indexed property. The property will respond to the [] method with an object that has a set of normal page_object properties that correspond to the definitions included in the identifier_list parameter, with the “what” of the “how and what” substituted based on the index provided to the [] method.
1404 1405 1406 1407 1408 |
# File 'lib/page-object/accessors.rb', line 1404 def indexed_property (name, identifier_list) define_method("#{name}") do IndexedProperties::TableOfElements.new(@browser, identifier_list) end end |
#label(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to retrieve the text from a label, another to return the label element, and another to check the label’s existence.
1046 1047 1048 1049 1050 1051 1052 |
# File 'lib/page-object/accessors.rb', line 1046 def label(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'label_for', &block) define_method(name) do return platform.label_text_for identifier.clone unless block_given? self.send("#{name}_element").text end end |
#link(name, identifier = {:index => 0}, &block) ⇒ Object Also known as: a
adds three methods - one to select a link, another to return a PageObject::Elements::Link object representing the link, and another that checks the link’s existence.
355 356 357 358 359 360 361 |
# File 'lib/page-object/accessors.rb', line 355 def link(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'link_for', &block) define_method(name) do return platform.click_link_for identifier.clone unless block_given? self.send("#{name}_element").click end end |
#list_item(name, identifier = {:index => 0}, &block) ⇒ Object Also known as: li
adds three methods - one to retrieve the text from a list item, another to return the list item element, and another to check the list item’s existence.
740 741 742 743 744 745 746 |
# File 'lib/page-object/accessors.rb', line 740 def list_item(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'list_item_for', &block) define_method(name) do return platform.list_item_text_for identifier.clone unless block_given? self.send("#{name}_element").text end end |
#ordered_list(name, identifier = {:index => 0}, &block) ⇒ Object Also known as: ol
adds three methods - one to return the text within the ordered list, one to retrieve the ordered list element, and another to test it’s existence.
798 799 800 801 802 803 804 |
# File 'lib/page-object/accessors.rb', line 798 def ordered_list(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'ordered_list_for', &block) define_method(name) do return platform.ordered_list_text_for identifier.clone unless block_given? self.send("#{name}_element").text end end |
#page_section(name, section_class, identifier) ⇒ Object
adds a method to return a page object rooted at an element
1306 1307 1308 1309 1310 |
# File 'lib/page-object/accessors.rb', line 1306 def page_section(name, section_class, identifier) define_method(name) do platform.page_for(identifier, section_class) end end |
#page_sections(name, section_class, identifier) ⇒ Object
adds a method to return a collection of page objects rooted at elements
1330 1331 1332 1333 1334 |
# File 'lib/page-object/accessors.rb', line 1330 def page_sections(name, section_class, identifier) define_method(name) do platform.pages_for(identifier, section_class) end end |
#page_url(url) ⇒ Object Also known as: direct_url
Specify the url for the page. A call to this method will generate a ‘goto’ method to take you to the page.
40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/page-object/accessors.rb', line 40 def page_url(url) define_method("goto") do platform.navigate_to self.page_url_value end define_method('page_url_value') do lookup = url.kind_of?(Symbol) ? self.send(url) : url erb = ERB.new(%Q{#{lookup}}) merged_params = self.class.instance_variable_get("@merged_params") params = merged_params ? merged_params : self.class.params erb.result(binding) end end |
#paragraph(name, identifier = {:index => 0}, &block) ⇒ Object Also known as: p
adds three methods - one to retrieve the text of a paragraph, another to retrieve a paragraph element, and another to check the paragraph’s existence.
988 989 990 991 992 993 994 |
# File 'lib/page-object/accessors.rb', line 988 def paragraph(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'paragraph_for', &block) define_method(name) do return platform.paragraph_text_for identifier.clone unless block_given? self.send("#{name}_element").text end end |
#params ⇒ Object
Return the params that exist on this page class
29 30 31 |
# File 'lib/page-object/accessors.rb', line 29 def params @params ||= {} end |
#params=(the_params) ⇒ Object
Set some values that can be used within the class. This is typically used to provide values that help build dynamic urls in the page_url method
22 23 24 |
# File 'lib/page-object/accessors.rb', line 22 def params=(the_params) @params = the_params end |
#radio_button(name, identifier = {:index => 0}, &block) ⇒ Object Also known as: radio
adds four methods - one to select, another to return if a radio button is selected, another method to return a PageObject::Elements::RadioButton object representing the radio button element, and another to check the radio button’s existence.
428 429 430 431 432 433 434 435 436 437 438 |
# File 'lib/page-object/accessors.rb', line 428 def (name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'radio_button_for', &block) define_method("select_#{name}") do return platform.select_radio(identifier.clone) unless block_given? self.send("#{name}_element").select end define_method("#{name}_selected?") do return platform.radio_selected?(identifier.clone) unless block_given? self.send("#{name}_element").selected? end end |
#radio_button_group(name, identifier) ⇒ Object Also known as: radio_group
adds five methods to help interact with a radio button group - a method to select a radio button in the group by given value/text, a method to return the values of all radio buttons in the group, a method to return if a radio button in the group is selected (will return the text of the selected radio button, if true), a method to return an array of PageObject::Elements::RadioButton objects representing the radio button group, and finally a method to check the existence of the radio button group.
radio_button_group(:color, :name => “preferred_color”) will generate ‘select_color’, ‘color_values’, ‘color_selected?’, ‘color_elements’, and ‘color?’ methods
The valid keys are:
-
:name => Watir and Selenium
461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 |
# File 'lib/page-object/accessors.rb', line 461 def (name, identifier) define_method("select_#{name}") do |value| platform.(identifier.clone).each do |radio_elem| if radio_elem.value == value return radio_elem.select end end end define_method("#{name}_values") do result = [] platform.(identifier.clone).each do |radio_elem| result << radio_elem.value end return result end define_method("#{name}_selected?") do platform.(identifier.clone).each do |radio_elem| return radio_elem.value if radio_elem.selected? end return false end define_method("#{name}_elements") do return platform.(identifier.clone) end define_method("#{name}?") do return platform.(identifier.clone).any? end end |
#row(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to retrieve the text from a table row, another to return the table row element, and another to check the row’s existence.
662 663 664 665 666 667 668 |
# File 'lib/page-object/accessors.rb', line 662 def row(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'row_for', &block) define_method("#{name}") do return platform.row_text_for identifier.clone unless block_given? self.send("#{name}_element").text end end |
#select_list(name, identifier = {:index => 0}, &block) ⇒ Object Also known as: select
adds five methods - one to select an item in a drop-down, another to fetch the currently selected item text, another to retrieve the select list element, another to check the drop down’s existence and another to get all the available options to select from.
313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 |
# File 'lib/page-object/accessors.rb', line 313 def select_list(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'select_list_for', &block) define_method(name) do return platform.select_list_value_for identifier.clone unless block_given? self.send("#{name}_element").value end define_method("#{name}=") do |value| return platform.select_list_value_set(identifier.clone, value) unless block_given? self.send("#{name}_element").select(value) end define_method("#{name}_options") do element = self.send("#{name}_element") (element && element.) ? element..collect(&:text) : [] end end |
#span(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to retrieve the text from a span, another to return the span element, and another to check the span’s existence.
572 573 574 575 576 577 578 |
# File 'lib/page-object/accessors.rb', line 572 def span(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'span_for', &block) define_method(name) do return platform.span_text_for identifier.clone unless block_given? self.send("#{name}_element").text end end |
#standard_methods(name, identifier, method, &block) ⇒ Object
1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 |
# File 'lib/page-object/accessors.rb', line 1369 def standard_methods(name, identifier, method, &block) define_method("#{name}_element") do return call_block(&block) if block_given? platform.send(method, identifier.clone) end define_method("#{name}?") do return call_block(&block).exists? if block_given? platform.send(method, identifier.clone).exists? end end |
#svg(name, identifier = {:index => 0}, &block) ⇒ Object
adds two methods - one to retrieve a svg, and another to check the svg’s existence.
1197 1198 1199 |
# File 'lib/page-object/accessors.rb', line 1197 def svg(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'svg_for', &block) end |
#table(name, identifier = {:index => 0}, &block) ⇒ Object
adds three methods - one to return the text for the table, one to retrieve the table element, and another to check the table’s existence. The existence method does not work on Selenium so it should not be called.
601 602 603 604 605 606 607 |
# File 'lib/page-object/accessors.rb', line 601 def table(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'table_for', &block) define_method(name) do return platform.table_text_for identifier.clone unless block_given? self.send("#{name}_element").text end end |
#text_area(name, identifier = {:index => 0}, &block) ⇒ Object Also known as: textarea
adds four methods to the page object - one to set text in a text area, another to retrieve text from a text area, another to return the text area element, and another to check the text area’s existence.
275 276 277 278 279 280 281 282 283 284 285 |
# File 'lib/page-object/accessors.rb', line 275 def text_area(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'text_area_for', &block) define_method(name) do return platform.text_area_value_for identifier.clone unless block_given? self.send("#{name}_element").value end define_method("#{name}=") do |value| return platform.text_area_value_set(identifier.clone, value) unless block_given? self.send("#{name}_element").value = value end end |
#text_field(name, identifier = {:index => 0}, &block) ⇒ Object
adds four methods to the page object - one to set text in a text field, another to retrieve text from a text field, another to return the text field element, another to check the text field’s existence.
210 211 212 213 214 215 216 217 218 219 220 |
# File 'lib/page-object/accessors.rb', line 210 def text_field(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'text_field_for', &block) define_method(name) do return platform.text_field_value_for identifier.clone unless block_given? self.send("#{name}_element").value end define_method("#{name}=") do |value| return platform.text_field_value_set(identifier.clone, value) unless block_given? self.send("#{name}_element").value = value end end |
#unordered_list(name, identifier = {:index => 0}, &block) ⇒ Object Also known as: ul
adds three methods - one to return the text within the unordered list, one to retrieve the unordered list element, and another to check it’s existence.
769 770 771 772 773 774 775 |
# File 'lib/page-object/accessors.rb', line 769 def unordered_list(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'unordered_list_for', &block) define_method(name) do return platform.unordered_list_text_for identifier.clone unless block_given? self.send("#{name}_element").text end end |
#video(name, identifier = {:index => 0}, &block) ⇒ Object
adds two methods - one to return the video element and another to check the video’s existence.
1147 1148 1149 |
# File 'lib/page-object/accessors.rb', line 1147 def video(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'video_for', &block) end |
#wait_for_expected_title(expected_title, timeout = ::PageObject.default_element_wait) ⇒ boolean
Creates a method that waits the expected_title of a page to match the actual.
67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/page-object/accessors.rb', line 67 def wait_for_expected_title(expected_title, timeout=::PageObject.default_element_wait) define_method("wait_for_expected_title?") do = lambda { "Expected title '#{expected_title}' instead of '#{title}'" } has_expected_title = (expected_title === title) wait_until(timeout, .call) do has_expected_title = (expected_title === title) end unless has_expected_title raise .call unless has_expected_title has_expected_title end end |