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.
-
#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, 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, 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_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.
-
#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.
1050 1051 1052 1053 1054 1055 1056 |
# File 'lib/page-object/accessors.rb', line 1050 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.
1100 1101 1102 |
# File 'lib/page-object/accessors.rb', line 1100 def audio(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'audio_for', &block) 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.
516 517 518 519 520 521 522 |
# File 'lib/page-object/accessors.rb', line 516 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.
1077 1078 1079 |
# File 'lib/page-object/accessors.rb', line 1077 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.
633 634 635 636 637 638 639 |
# File 'lib/page-object/accessors.rb', line 633 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.
390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 |
# File 'lib/page-object/accessors.rb', line 390 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.
545 546 547 548 549 550 551 |
# File 'lib/page-object/accessors.rb', line 545 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, 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.
1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 |
# File 'lib/page-object/accessors.rb', line 1171 def element(name, tag, identifier={:index => 0}, &block) 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, identifier = {:index => 0}, &block) ⇒ Object
adds a method to return a collection of generic Element objects for a specific tag.
1204 1205 1206 1207 1208 1209 |
# File 'lib/page-object/accessors.rb', line 1204 def elements(name, tag, identifier={:index => 0}, &block) 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.
114 115 116 117 118 |
# File 'lib/page-object/accessors.rb', line 114 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.
132 133 134 135 136 137 |
# File 'lib/page-object/accessors.rb', line 132 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.
94 95 96 97 98 99 100 101 |
# File 'lib/page-object/accessors.rb', line 94 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.
990 991 992 993 994 995 996 |
# File 'lib/page-object/accessors.rb', line 990 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.
687 688 689 |
# File 'lib/page-object/accessors.rb', line 687 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.
798 799 800 801 802 803 804 |
# File 'lib/page-object/accessors.rb', line 798 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.
825 826 827 828 829 830 831 |
# File 'lib/page-object/accessors.rb', line 825 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.
852 853 854 855 856 857 858 |
# File 'lib/page-object/accessors.rb', line 852 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.
879 880 881 882 883 884 885 |
# File 'lib/page-object/accessors.rb', line 879 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.
906 907 908 909 910 911 912 |
# File 'lib/page-object/accessors.rb', line 906 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.
933 934 935 936 937 938 939 |
# File 'lib/page-object/accessors.rb', line 933 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.
246 247 248 249 250 251 252 |
# File 'lib/page-object/accessors.rb', line 246 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.
663 664 665 |
# File 'lib/page-object/accessors.rb', line 663 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.
157 158 159 160 161 |
# File 'lib/page-object/accessors.rb', line 157 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.
181 182 183 184 185 |
# File 'lib/page-object/accessors.rb', line 181 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.
1279 1280 1281 1282 1283 |
# File 'lib/page-object/accessors.rb', line 1279 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.
1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 |
# File 'lib/page-object/accessors.rb', line 1018 def label(name, identifier={:index => 0}, &block) standard_methods(name, identifier, 'label_for', &block) define_method("choose_#{name}") do return platform.choose_label(identifier.clone) unless block_given? self.send("#{name}_element").click end 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.
357 358 359 360 361 362 363 |
# File 'lib/page-object/accessors.rb', line 357 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.
712 713 714 715 716 717 718 |
# File 'lib/page-object/accessors.rb', line 712 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.
770 771 772 773 774 775 776 |
# File 'lib/page-object/accessors.rb', line 770 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_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.
960 961 962 963 964 965 966 |
# File 'lib/page-object/accessors.rb', line 960 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.
430 431 432 433 434 435 436 437 438 439 440 |
# File 'lib/page-object/accessors.rb', line 430 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
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 489 490 |
# File 'lib/page-object/accessors.rb', line 463 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 |
#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.
315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 |
# File 'lib/page-object/accessors.rb', line 315 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.
574 575 576 577 578 579 580 |
# File 'lib/page-object/accessors.rb', line 574 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
1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 |
# File 'lib/page-object/accessors.rb', line 1244 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.
1146 1147 1148 |
# File 'lib/page-object/accessors.rb', line 1146 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.
603 604 605 606 607 608 609 |
# File 'lib/page-object/accessors.rb', line 603 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.
277 278 279 280 281 282 283 284 285 286 287 |
# File 'lib/page-object/accessors.rb', line 277 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.
212 213 214 215 216 217 218 219 220 221 222 |
# File 'lib/page-object/accessors.rb', line 212 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.
741 742 743 744 745 746 747 |
# File 'lib/page-object/accessors.rb', line 741 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.
1123 1124 1125 |
# File 'lib/page-object/accessors.rb', line 1123 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 80 |
# 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 page_title = title has_expected_title = (expected_title === page_title) if not has_expected_title and not timeout.nil? wait_until(timeout, "Expected title '#{expected_title}' instead of '#{page_title}'") do has_expected_title = (expected_title === page_title) has_expected_title end end raise "Expected title '#{expected_title}' instead of '#{page_title}'" unless has_expected_title has_expected_title end end |