Class: Page
- Inherits:
-
Object
- Object
- Page
- Defined in:
- lib/taft_files/framework/zznamezz/watir/pages/page_objects.rb
Overview
Base class that every defined page will inherit from
Instance Attribute Summary collapse
-
#browser ⇒ Object
Returns the value of attribute browser.
-
#displayed_field ⇒ Object
Returns the value of attribute displayed_field.
-
#displayed_value ⇒ Object
Returns the value of attribute displayed_value.
-
#field_parameters_array ⇒ Object
stores parameters of each field added to the page.
-
#name ⇒ Object
Returns the value of attribute name.
Instance Method Summary collapse
-
#add_field(name, type, key, value) ⇒ Object
Defines methods to access the field of specified type, by specified key & value.
-
#add_field_using_constructor_class(name, type, key, value) ⇒ Object
Defines methods to access the field of specified type, by specified key & value.
-
#add_page(page_object) ⇒ Object
Add to self all fields that were defined on page_object E.g.
- #displayed?(wait = true) ⇒ Boolean
-
#initialize(name, field, value = nil) ⇒ Page
constructor
Name : the name of this page, e.g.
-
#wait_until_displayed(timeout = 5) ⇒ Object
Method to wait for the page to be displayed, up to <timeout> seconds Returns displayed status (true/false).
Constructor Details
#initialize(name, field, value = nil) ⇒ Page
Name : the name of this page, e.g. rsHomepage Field : the field used to determine if the page is displayed. More precisely, the name of the method that accesses the field. E.g. if the page has a field called ‘page_title’ defined, then its accessor method ‘page_title_field’ will have been generated . If the displayed? check is against an expected value, specify the field name corresponding to the read-method (e.g. page_title), and specify the value (String or Regexp). If the displayed? check is for a field to exist, specify the field’s accessor method name (e.g. page_title_field), and keep value nil.
16 17 18 19 20 21 |
# File 'lib/taft_files/framework/zznamezz/watir/pages/page_objects.rb', line 16 def initialize(name, field, value = nil) @name = name @displayed_field = field @displayed_value = value @field_parameters_array = [] end |
Instance Attribute Details
#browser ⇒ Object
Returns the value of attribute browser.
5 6 7 |
# File 'lib/taft_files/framework/zznamezz/watir/pages/page_objects.rb', line 5 def browser @browser end |
#displayed_field ⇒ Object
Returns the value of attribute displayed_field.
4 5 6 |
# File 'lib/taft_files/framework/zznamezz/watir/pages/page_objects.rb', line 4 def displayed_field @displayed_field end |
#displayed_value ⇒ Object
Returns the value of attribute displayed_value.
4 5 6 |
# File 'lib/taft_files/framework/zznamezz/watir/pages/page_objects.rb', line 4 def displayed_value @displayed_value end |
#field_parameters_array ⇒ Object
stores parameters of each field added to the page
6 7 8 |
# File 'lib/taft_files/framework/zznamezz/watir/pages/page_objects.rb', line 6 def field_parameters_array @field_parameters_array end |
#name ⇒ Object
Returns the value of attribute name.
4 5 6 |
# File 'lib/taft_files/framework/zznamezz/watir/pages/page_objects.rb', line 4 def name @name end |
Instance Method Details
#add_field(name, type, key, value) ⇒ Object
Defines methods to access the field of specified type, by specified key & value
72 73 74 75 |
# File 'lib/taft_files/framework/zznamezz/watir/pages/page_objects.rb', line 72 def add_field(name, type, key, value) field_parameters_array << [name, type, key, value] add_field_using_constructor_class(name, type, key, value) end |
#add_field_using_constructor_class(name, type, key, value) ⇒ Object
Defines methods to access the field of specified type, by specified key & value
86 87 88 |
# File 'lib/taft_files/framework/zznamezz/watir/pages/page_objects.rb', line 86 def add_field_using_constructor_class(name, type, key, value) PageFieldConstructor.add_fields(self, name, type, key, value) end |
#add_page(page_object) ⇒ Object
Add to self all fields that were defined on page_object E.g. the supplied page_object represents part of a panel/page that is common to several pages
79 80 81 82 83 |
# File 'lib/taft_files/framework/zznamezz/watir/pages/page_objects.rb', line 79 def add_page(page_object) page_object.field_parameters_array.each do |field_parameters| add_field(field_parameters[0], field_parameters[1], field_parameters[2], field_parameters[3]) end end |
#displayed?(wait = true) ⇒ Boolean
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/taft_files/framework/zznamezz/watir/pages/page_objects.rb', line 23 def displayed?(wait = true) displayed = false puts "in displayed? for page #{@name}" if wait puts "will wait for page to be loaded" wait_until_displayed end puts "about to send to #{@displayed_field.to_sym.inspect}" begin field_or_value = self.send(@displayed_field.to_sym) rescue Watir::Exception::UnknownObjectException # cannot find the field on the page # do nothing, displayed will stay false rescue Selenium::WebDriver::Error::StaleElementReferenceError # TODO : fix! wait then call displayed? again? puts "hit StaleElementReferenceError for page #{@name}" end puts "field_or_value retrieved is of class #{field_or_value.class}" p field_or_value if @displayed_value == nil displayed = true if field_or_value.exists? else if @displayed_value.class == Regexp displayed = true if field_or_value =~ @displayed_value else displayed = true if field_or_value == @displayed_value end end displayed end |
#wait_until_displayed(timeout = 5) ⇒ Object
Method to wait for the page to be displayed, up to <timeout> seconds Returns displayed status (true/false)
58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/taft_files/framework/zznamezz/watir/pages/page_objects.rb', line 58 def wait_until_displayed(timeout = 5) max = timeout * 10 count = 0 displayed = false while count < max displayed = displayed?(false) break if displayed sleep 0.2 count += 2 end displayed end |