Class: PageObject::Platforms::Watir::PageObject

Inherits:
Object
  • Object
show all
Defined in:
lib/page-object/platforms/watir/page_object.rb

Overview

Watir implementation of the page object platform driver. You should not use the class directly. Instead you should include the PageObject module in your page object and use the methods dynamically added from the PageObject::Accessors module.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(browser) ⇒ PageObject


21
22
23
# File 'lib/page-object/platforms/watir/page_object.rb', line 21

def initialize(browser)
  @browser = browser
end

Instance Attribute Details

#browserObject (readonly)

Returns the value of attribute browser


14
15
16
# File 'lib/page-object/platforms/watir/page_object.rb', line 14

def browser
  @browser
end

Class Method Details

.define_widget_accessors(widget_tag, widget_class, base_element_tag) ⇒ Object


16
17
18
19
# File 'lib/page-object/platforms/watir/page_object.rb', line 16

def self.define_widget_accessors(widget_tag, widget_class, base_element_tag)
  define_widget_singular_accessor(base_element_tag, widget_class, widget_tag)
  define_widget_multiple_accessor(base_element_tag, widget_class, widget_tag)
end

Instance Method Details

#alert(frame = nil, &block) ⇒ Object

platform method to handle an alert popup See PageObject#alert


76
77
78
79
80
81
82
83
84
85
86
# File 'lib/page-object/platforms/watir/page_object.rb', line 76

def alert(frame=nil, &block)
  switch_to_frame(frame)
  yield
  value = nil
  if @browser.alert.exists?
    value = @browser.alert.text
    @browser.alert.ok
  end
  switch_to_default_content(frame)
  value
end

#area_for(identifier) ⇒ Object

platform method to retrieve an area element


889
890
891
# File 'lib/page-object/platforms/watir/page_object.rb', line 889

def area_for(identifier)
  find_watir_element("area(identifier)", Elements::Area, identifier, 'area')
end

#areas_for(identifier) ⇒ Object

platform method to retrieve an array of area elements


896
897
898
# File 'lib/page-object/platforms/watir/page_object.rb', line 896

def areas_for(identifier)
  find_watir_elements("areas(identifier)", Elements::Area, identifier, 'area')
end

#attach_to_window(identifier, &block) ⇒ Object

platform method to handle attaching to a running window See PageObject#attach_to_window


130
131
132
133
# File 'lib/page-object/platforms/watir/page_object.rb', line 130

def attach_to_window(identifier, &block)
  win_id = {identifier.keys.first => /#{Regexp.escape(identifier.values.first)}/}
  @browser.window(win_id).use &block
end

#audio_for(identifier) ⇒ Object

platform method to retrieve an audio element


917
918
919
# File 'lib/page-object/platforms/watir/page_object.rb', line 917

def audio_for(identifier)
  find_watir_element("audio(identifier)", Elements::Audio, identifier, 'audio')
end

#audios_for(identifier) ⇒ Object

platform method to retrieve an array of audio elements


924
925
926
# File 'lib/page-object/platforms/watir/page_object.rb', line 924

def audios_for(identifier)
  find_watir_elements("audios(identifier)", Elements::Audio, identifier, 'audio')
end

#b_for(identifier) ⇒ Object

platform method to retrieve the b element See PageObject::Accessors#b


1000
1001
1002
# File 'lib/page-object/platforms/watir/page_object.rb', line 1000

def b_for(identifier)
  find_watir_element("b(identifier)", Elements::Bold, identifier, 'b')
end

#b_text_for(identifier) ⇒ Object

platform method to retrieve the text for a b See PageObject::Accessors#b


992
993
994
# File 'lib/page-object/platforms/watir/page_object.rb', line 992

def b_text_for(identifier)
  process_watir_call("b(identifier).text", Elements::Bold, identifier, nil, 'b')
end

#backObject

platform method to go back to the previous page See PageObject#back


174
175
176
# File 'lib/page-object/platforms/watir/page_object.rb', line 174

def back
  @browser.back
end

#bs_for(identifier) ⇒ Object

platform method to retrieve an array of bs


1007
1008
1009
# File 'lib/page-object/platforms/watir/page_object.rb', line 1007

def bs_for(identifier)
  find_watir_elements("bs(identifier)", Elements::Bold, identifier, 'b')
end

#button_for(identifier) ⇒ Object

platform method to retrieve a button element See PageObject::Accessors#button


479
480
481
482
# File 'lib/page-object/platforms/watir/page_object.rb', line 479

def button_for(identifier)
  call = "button(identifier)"
  find_watir_element(call, Elements::Button, identifier)
end

#buttons_for(identifier) ⇒ Object

platform method to retrieve an array of button elements


487
488
489
490
# File 'lib/page-object/platforms/watir/page_object.rb', line 487

def buttons_for(identifier)
  call = "buttons(identifier)"
  find_watir_elements(call, Elements::Button, identifier)
end

#canvas_for(identifier) ⇒ Object

platform method to retrieve a canvas element


903
904
905
# File 'lib/page-object/platforms/watir/page_object.rb', line 903

def canvas_for(identifier)
  find_watir_element("canvas(identifier)", Elements::Canvas, identifier, 'canvas')
end

#canvass_for(identifier) ⇒ Object

platform method to retrieve an array of canvas elements


910
911
912
# File 'lib/page-object/platforms/watir/page_object.rb', line 910

def canvass_for(identifier)
  find_watir_elements("canvases(identifier)", Elements::Canvas, identifier, 'canvas')
end

#cell_for(identifier) ⇒ Object

platform method to retrieve a table cell element See PageObject::Accessors#cell


528
529
530
# File 'lib/page-object/platforms/watir/page_object.rb', line 528

def cell_for(identifier)
  find_watir_element("td(identifier)", Elements::TableCell, identifier, 'td')
end

#cell_text_for(identifier) ⇒ Object

platform method to retrieve the text from a table cell See PageObject::Accessors#cell


519
520
521
522
# File 'lib/page-object/platforms/watir/page_object.rb', line 519

def cell_text_for(identifier)
  process_watir_call("td(identifier).text", Elements::TableCell, identifier,
                     nil, 'td')
end

#cells_for(identifier) ⇒ Object

platform method to retrieve an array of table cell elements


535
536
537
# File 'lib/page-object/platforms/watir/page_object.rb', line 535

def cells_for(identifier)
  find_watir_elements("tds(identifier)", Elements::TableCell, identifier, 'td')
end

#check_checkbox(identifier) ⇒ Object

platform method to check a checkbox See PageObject::Accessors#checkbox


354
355
356
# File 'lib/page-object/platforms/watir/page_object.rb', line 354

def check_checkbox(identifier)
  process_watir_call("checkbox(identifier).set", Elements::CheckBox, identifier)
end

#checkbox_checked?(identifier) ⇒ Boolean

platform method to determine if a checkbox is checked See PageObject::Accessors#checkbox


370
371
372
# File 'lib/page-object/platforms/watir/page_object.rb', line 370

def checkbox_checked?(identifier)
  process_watir_call("checkbox(identifier).set?", Elements::CheckBox, identifier)
end

#checkbox_for(identifier) ⇒ Object

platform method to return a PageObject::Elements::CheckBox element See PageObject::Accessors#checkbox


378
379
380
# File 'lib/page-object/platforms/watir/page_object.rb', line 378

def checkbox_for(identifier)
  find_watir_element("checkbox(identifier)", Elements::CheckBox, identifier)
end

#checkboxs_for(identifier) ⇒ Object

platform method to retrieve an array of checkbox elements


385
386
387
# File 'lib/page-object/platforms/watir/page_object.rb', line 385

def checkboxs_for(identifier)
  find_watir_elements("checkboxes(identifier)", Elements::CheckBox, identifier)
end

#clear_cookiesObject

platform method to clear the cookies from the browser See PageObject#clear_cookies


190
191
192
# File 'lib/page-object/platforms/watir/page_object.rb', line 190

def clear_cookies
  @browser.cookies.clear
end

#click_area_for(identifier) ⇒ Object

platform method to click on an area


882
883
884
# File 'lib/page-object/platforms/watir/page_object.rb', line 882

def click_area_for(identifier)
  process_watir_call("area(identifier).click", Elements::Area, identifier, nil, 'area')
end

#click_button_for(identifier) ⇒ Object

platform method to click a button See PageObject::Accessors#button


470
471
472
473
# File 'lib/page-object/platforms/watir/page_object.rb', line 470

def click_button_for(identifier)
  call = "button(identifier)"
  process_watir_call("#{call}.click", Elements::Button, identifier)
end

platform method to click a link See PageObject::Accessors#link


328
329
330
331
# File 'lib/page-object/platforms/watir/page_object.rb', line 328

def click_link_for(identifier)
  call = "link(identifier)"
  process_watir_call("#{call}.click if identifier", Elements::Link, identifier)
end

#confirm(response, frame = nil, &block) ⇒ Object

platform method to handle a confirm popup See PageObject#confirm


92
93
94
95
96
97
98
99
100
101
102
# File 'lib/page-object/platforms/watir/page_object.rb', line 92

def confirm(response, frame=nil, &block)
  switch_to_frame(frame)
  yield
  value = nil
  if @browser.alert.exists?
    value = @browser.alert.text
    response ? @browser.alert.ok : @browser.alert.close
  end
  switch_to_default_content(frame)
  value
end

#current_urlObject

platform method to get the current url See PageObject#current_url


37
38
39
# File 'lib/page-object/platforms/watir/page_object.rb', line 37

def current_url
  @browser.url
end

#div_for(identifier) ⇒ Object

platform method to return a PageObject::Elements::Div element See PageObject::Accessors#div


432
433
434
# File 'lib/page-object/platforms/watir/page_object.rb', line 432

def div_for(identifier)
  find_watir_element("div(identifier)", Elements::Div, identifier, 'div')
end

#div_text_for(identifier) ⇒ Object

platform method to return the text for a div See PageObject::Accessors#div


424
425
426
# File 'lib/page-object/platforms/watir/page_object.rb', line 424

def div_text_for(identifier)
  process_watir_call("div(identifier).text", Elements::Div, identifier, nil, 'div')
end

#divs_for(identifier) ⇒ Object

platform method to retrieve an array of div elements


439
440
441
# File 'lib/page-object/platforms/watir/page_object.rb', line 439

def divs_for(identifier)
  find_watir_elements("divs(identifier)", Elements::Div, identifier, 'div')
end

#element_for(tag, identifier) ⇒ Object

platform method to return a PageObject::Elements::Element element See PageObject::Accessors#element


946
947
948
# File 'lib/page-object/platforms/watir/page_object.rb', line 946

def element_for(tag, identifier)
  find_watir_element("#{tag.to_s}(identifier)", Elements::Element, identifier, tag.to_s)
end

#element_with_focusObject


135
136
137
138
139
140
# File 'lib/page-object/platforms/watir/page_object.rb', line 135

def element_with_focus
  element = browser.execute_script("return document.activeElement")
  type = element.type.to_sym if element.tag_name.to_sym == :input
  cls = ::PageObject::Elements.element_class_for(element.tag_name, type)
  cls.new(element)
end

#elements_for(tag, identifier) ⇒ Object

platform method to return an array of PageObject::Elements::Element elements See PageObject::Accessors#element


954
955
956
# File 'lib/page-object/platforms/watir/page_object.rb', line 954

def elements_for(tag, identifier)
  find_watir_elements("#{tag.to_s}s(identifier)", Elements::Element, identifier, tag.to_s)
end

#execute_script(script, *args) ⇒ Object

platform method to execute javascript on the browser See PageObject#execute_script


122
123
124
# File 'lib/page-object/platforms/watir/page_object.rb', line 122

def execute_script(script, *args)
  @browser.execute_script(script, *args)
end

#file_field_for(identifier) ⇒ Object

platform method to retrieve a file_field element See PageObject::Accessors#file_field


868
869
870
# File 'lib/page-object/platforms/watir/page_object.rb', line 868

def file_field_for(identifier)
  find_watir_element("file_field(identifier)", Elements::FileField, identifier)
end

#file_field_value_set(identifier, value) ⇒ Object

platform method to set the file on a file_field element See PageObject::Accessors#file_field


859
860
861
862
# File 'lib/page-object/platforms/watir/page_object.rb', line 859

def file_field_value_set(identifier, value)
  process_watir_call("file_field(identifier).set(value)", Elements::FileField,
                     identifier, value)
end

#file_fields_for(identifier) ⇒ Object

platform method to retrieve an array of file field elements


875
876
877
# File 'lib/page-object/platforms/watir/page_object.rb', line 875

def file_fields_for(identifier)
  find_watir_elements("file_fields(identifier)", Elements::FileField, identifier)
end

#form_for(identifier) ⇒ Object

platform method to retrieve a form element See PageObject::Accessors#form


590
591
592
# File 'lib/page-object/platforms/watir/page_object.rb', line 590

def form_for(identifier)
  find_watir_element("form(identifier)", Elements::Form, identifier)
end

#forms_for(identifier) ⇒ Object

platform method to retrieve an array of forms


597
598
599
# File 'lib/page-object/platforms/watir/page_object.rb', line 597

def forms_for(identifier)
  find_watir_elements("forms(identifier)", Elements::Form, identifier)
end

#forwardObject

platform method to go forward to the next page See PageObject#forward


182
183
184
# File 'lib/page-object/platforms/watir/page_object.rb', line 182

def forward
  @browser.forward
end

#h1_for(identifier) ⇒ Object

platform method to retrieve the h1 element See PageObject::Accessors#h1


682
683
684
# File 'lib/page-object/platforms/watir/page_object.rb', line 682

def h1_for(identifier)
  find_watir_element("h1(identifier)", Elements::Heading, identifier, 'h1')
end

#h1_text_for(identifier) ⇒ Object

platform method to retrieve the text for a h1 See PageObject::Accessors#h1


674
675
676
# File 'lib/page-object/platforms/watir/page_object.rb', line 674

def h1_text_for(identifier)
  process_watir_call("h1(identifier).text", Elements::Heading, identifier, nil, 'h1')
end

#h1s_for(identifier) ⇒ Object

platform method to retrieve an array of h1s


689
690
691
# File 'lib/page-object/platforms/watir/page_object.rb', line 689

def h1s_for(identifier)
  find_watir_elements("h1s(identifier)", Elements::Heading, identifier, 'h1')
end

#h2_for(identifier) ⇒ Object

platform method to retrieve the h2 element See PageObject::Accessors#h2


705
706
707
# File 'lib/page-object/platforms/watir/page_object.rb', line 705

def h2_for(identifier)
  find_watir_element("h2(identifier)", Elements::Heading, identifier, 'h2')
end

#h2_text_for(identifier) ⇒ Object

platform method to retrieve the text for a h2 See PageObject::Accessors#h2


697
698
699
# File 'lib/page-object/platforms/watir/page_object.rb', line 697

def h2_text_for(identifier)
  process_watir_call("h2(identifier).text", Elements::Heading, identifier, nil, 'h2')
end

#h2s_for(identifier) ⇒ Object

platform method to retrieve an array of h2s


712
713
714
# File 'lib/page-object/platforms/watir/page_object.rb', line 712

def h2s_for(identifier)
  find_watir_elements("h2s(identifier)", Elements::Heading, identifier, 'h2')
end

#h3_for(identifier) ⇒ Object

platform method to retrieve the h3 element See PageObject::Accessors#h3


728
729
730
# File 'lib/page-object/platforms/watir/page_object.rb', line 728

def h3_for(identifier)
  find_watir_element("h3(identifier)", Elements::Heading, identifier, 'h3')
end

#h3_text_for(identifier) ⇒ Object

platform method to retrieve the text for a h3 See PageObject::Accessors#h3


720
721
722
# File 'lib/page-object/platforms/watir/page_object.rb', line 720

def h3_text_for(identifier)
  process_watir_call("h3(identifier).text", Elements::Heading, identifier, nil, 'h3')
end

#h3s_for(identifier) ⇒ Object

platform method to retrieve an array of h3s


735
736
737
# File 'lib/page-object/platforms/watir/page_object.rb', line 735

def h3s_for(identifier)
  find_watir_elements("h3s(identifier)", Elements::Heading, identifier, 'h3')
end

#h4_for(identifier) ⇒ Object

platform method to retrieve the h4 element See PageObject::Accessors#h4


751
752
753
# File 'lib/page-object/platforms/watir/page_object.rb', line 751

def h4_for(identifier)
  find_watir_element("h4(identifier)", Elements::Heading, identifier, 'h4')
end

#h4_text_for(identifier) ⇒ Object

platform method to retrieve the text for a h4 See PageObject::Accessors#h4


743
744
745
# File 'lib/page-object/platforms/watir/page_object.rb', line 743

def h4_text_for(identifier)
  process_watir_call("h4(identifier).text", Elements::Heading, identifier, nil, 'h4')
end

#h4s_for(identifier) ⇒ Object

platform method to retrieve an array of h4s


758
759
760
# File 'lib/page-object/platforms/watir/page_object.rb', line 758

def h4s_for(identifier)
  find_watir_elements("h4s(identifier)", Elements::Heading, identifier, 'h4')
end

#h5_for(identifier) ⇒ Object

platform method to retrieve the h5 element See PageObject::Accessors#h5


774
775
776
# File 'lib/page-object/platforms/watir/page_object.rb', line 774

def h5_for(identifier)
  find_watir_element("h5(identifier)", Elements::Heading, identifier, 'h5')
end

#h5_text_for(identifier) ⇒ Object

platform method to retrieve the text for a h5 See PageObject::Accessors#h5


766
767
768
# File 'lib/page-object/platforms/watir/page_object.rb', line 766

def h5_text_for(identifier)
  process_watir_call("h5(identifier).text", Elements::Heading, identifier, nil, 'h5')
end

#h5s_for(identifier) ⇒ Object

platform method to retrieve an array of h5s


781
782
783
# File 'lib/page-object/platforms/watir/page_object.rb', line 781

def h5s_for(identifier)
  find_watir_elements("h5s(identifier)", Elements::Heading, identifier, 'h5')
end

#h6_for(identifier) ⇒ Object

platform method to retrieve the h6 element See PageObject::Accessors#h6


797
798
799
# File 'lib/page-object/platforms/watir/page_object.rb', line 797

def h6_for(identifier)
  find_watir_element("h6(identifier)", Elements::Heading, identifier, 'h6')
end

#h6_text_for(identifier) ⇒ Object

platform method to retrieve the text for a h6 See PageObject::Accessors#h6


789
790
791
# File 'lib/page-object/platforms/watir/page_object.rb', line 789

def h6_text_for(identifier)
  process_watir_call("h6(identifier).text", Elements::Heading, identifier, nil, 'h6')
end

#h6s_for(identifier) ⇒ Object

platform method to retrieve an array of h6s


804
805
806
# File 'lib/page-object/platforms/watir/page_object.rb', line 804

def h6s_for(identifier)
  find_watir_elements("h6s(identifier)", Elements::Heading, identifier, 'h6')
end

#hidden_field_for(identifier) ⇒ Object

platform method to retrieve a hidden field element See PageObject::Accessors#hidden_field


246
247
248
# File 'lib/page-object/platforms/watir/page_object.rb', line 246

def hidden_field_for(identifier)
  find_watir_element("hidden(identifier)", Elements::HiddenField, identifier)
end

#hidden_field_value_for(identifier) ⇒ Object

platform method to get the value stored in a hidden field See PageObject::Accessors#hidden_field


238
239
240
# File 'lib/page-object/platforms/watir/page_object.rb', line 238

def hidden_field_value_for(identifier)
  process_watir_call("hidden(identifier).value", Elements::HiddenField, identifier)
end

#hidden_fields_for(identifier) ⇒ Object

platform method to retrieve an array of hidden field elements


253
254
255
# File 'lib/page-object/platforms/watir/page_object.rb', line 253

def hidden_fields_for(identifier)
  find_watir_elements("hiddens(identifier)", Elements::HiddenField, identifier)
end

#htmlObject

platform method to retrieve the html for the current page See PageObject#html


53
54
55
# File 'lib/page-object/platforms/watir/page_object.rb', line 53

def html
  @browser.html
end

#i_for(identifier) ⇒ Object

platform method to retrieve the i element See PageObject::Accessors#i


1023
1024
1025
# File 'lib/page-object/platforms/watir/page_object.rb', line 1023

def i_for(identifier)
  find_watir_element("i(identifier)", Elements::Italic, identifier, 'i')
end

#i_text_for(identifier) ⇒ Object

platform method to retrieve the text for a i See PageObject::Accessors#i


1015
1016
1017
# File 'lib/page-object/platforms/watir/page_object.rb', line 1015

def i_text_for(identifier)
  process_watir_call("i(identifier).text", Elements::Italic, identifier, nil, 'i')
end

#image_for(identifier) ⇒ Object

platform method to retrieve an image element See PageObject::Accessors#image


575
576
577
# File 'lib/page-object/platforms/watir/page_object.rb', line 575

def image_for(identifier)
  find_watir_element("image(identifier)", Elements::Image, identifier)
end

#image_loaded_for(identifier) ⇒ Object

platform method to retrieve load status of an image element See PageObject::Accessors#image


567
568
569
# File 'lib/page-object/platforms/watir/page_object.rb', line 567

def image_loaded_for(identifier)
  process_watir_call("image(identifier).loaded?", Elements::Image, identifier)
end

#images_for(identifier) ⇒ Object

platform method to retrieve an array of image elements


582
583
584
# File 'lib/page-object/platforms/watir/page_object.rb', line 582

def images_for(identifier)
  find_watir_elements("images(identifier)", Elements::Image, identifier)
end

#in_frame(identifier, frame = nil, &block) ⇒ Object

platform method to switch to a frame and execute a block See PageObject#in_frame


146
147
148
149
150
# File 'lib/page-object/platforms/watir/page_object.rb', line 146

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

platform method to switch to an iframe and execute a block See PageObject#in_frame


156
157
158
159
160
# File 'lib/page-object/platforms/watir/page_object.rb', line 156

def in_iframe(identifier, frame=nil, &block)
  frame = [] if frame.nil?
  frame << {iframe: identifier}
  block.call(frame)
end

#is_for(identifier) ⇒ Object

platform method to retrieve an array of is


1030
1031
1032
# File 'lib/page-object/platforms/watir/page_object.rb', line 1030

def is_for(identifier)
  find_watir_elements("is(identifier)", Elements::Italic, identifier, 'i')
end

#label_for(identifier) ⇒ Object

platform method to return a PageObject::Elements::Label element See PageObject::Accessors#label


843
844
845
# File 'lib/page-object/platforms/watir/page_object.rb', line 843

def label_for(identifier)
  find_watir_element("label(identifier)", Elements::Label, identifier, 'label')
end

#label_text_for(identifier) ⇒ Object

platform method to return the text for a label See PageObject::Accessors#label


835
836
837
# File 'lib/page-object/platforms/watir/page_object.rb', line 835

def label_text_for(identifier)
  process_watir_call("label(identifier).text", Elements::Label, identifier, nil, 'label')
end

#labels_for(identifier) ⇒ Object

platform method to retrieve an array of label elements


851
852
853
# File 'lib/page-object/platforms/watir/page_object.rb', line 851

def labels_for(identifier)
  find_watir_elements("labels(identifier)", Elements::Label, identifier, 'label')
end

platform method to return a PageObject::Elements::Link object see PageObject::Accessors#link


337
338
339
340
# File 'lib/page-object/platforms/watir/page_object.rb', line 337

def link_for(identifier)
  call = "link(identifier)"
  find_watir_element(call, Elements::Link, identifier)
end

platform method to retrieve an array of link elements


345
346
347
348
# File 'lib/page-object/platforms/watir/page_object.rb', line 345

def links_for(identifier)
  call = "links(identifier)"
  find_watir_elements(call, Elements::Link, identifier)
end

#list_item_for(identifier) ⇒ Object

platform method to retrieve a list item element See PageObject::Accessors#list_item


613
614
615
# File 'lib/page-object/platforms/watir/page_object.rb', line 613

def list_item_for(identifier)
  find_watir_element("li(identifier)", Elements::ListItem, identifier, 'li')
end

#list_item_text_for(identifier) ⇒ Object

platform method to retrieve the text from a list item See PageObject::Accessors#list_item


605
606
607
# File 'lib/page-object/platforms/watir/page_object.rb', line 605

def list_item_text_for(identifier)
  process_watir_call("li(identifier).text", Elements::ListItem, identifier, nil, 'li')
end

#list_items_for(identifier) ⇒ Object

platform method to retrieve an array of list items


620
621
622
# File 'lib/page-object/platforms/watir/page_object.rb', line 620

def list_items_for(identifier)
  find_watir_elements("lis(identifier)", Elements::ListItem, identifier, 'li')
end

platform method to navigate to a provided url See PageObject#navigate_to


29
30
31
# File 'lib/page-object/platforms/watir/page_object.rb', line 29

def navigate_to(url)
  @browser.goto url
end

#ordered_list_for(identifier) ⇒ Object

platform method to retrieve an ordered list element See PageObject::Accessors#ordered_list


659
660
661
# File 'lib/page-object/platforms/watir/page_object.rb', line 659

def ordered_list_for(identifier)
  find_watir_element("ol(identifier)", Elements::OrderedList, identifier, 'ol')
end

#ordered_list_text_for(identifier) ⇒ Object

platform method to retrieve the text from an ordered list See PageObject::Accessors#ordered_list


651
652
653
# File 'lib/page-object/platforms/watir/page_object.rb', line 651

def ordered_list_text_for(identifier)
  process_watir_call("ol(identifier).text", Elements::OrderedList, identifier, nil, 'ol')
end

#ordered_lists_for(identifier) ⇒ Object

platform method to retrieve an array of ordered lists


666
667
668
# File 'lib/page-object/platforms/watir/page_object.rb', line 666

def ordered_lists_for(identifier)
  find_watir_elements("ols(identifier)", Elements::OrderedList, identifier, 'ol')
end

#page_for(identifier, page_class) ⇒ Object

platform method to return a PageObject rooted at an element See PageObject::Accessors#page_section


962
963
964
# File 'lib/page-object/platforms/watir/page_object.rb', line 962

def page_for(identifier, page_class)
  find_watir_page(identifier, page_class)
end

#pages_for(identifier, page_class) ⇒ Object

platform method to return a collection of PageObjects rooted at elements See PageObject::Accessors#page_sections


970
971
972
# File 'lib/page-object/platforms/watir/page_object.rb', line 970

def pages_for(identifier, page_class)
  SectionCollection[*find_watir_pages(identifier, page_class)]
end

#paragraph_for(identifier) ⇒ Object

platform method to retrieve the paragraph element See PageObject::Accessors#paragraph


820
821
822
# File 'lib/page-object/platforms/watir/page_object.rb', line 820

def paragraph_for(identifier)
  find_watir_element("p(identifier)", Elements::Paragraph, identifier, 'p')
end

#paragraph_text_for(identifier) ⇒ Object

platform method to retrieve the text for a paragraph See PageObject::Accessors#paragraph


812
813
814
# File 'lib/page-object/platforms/watir/page_object.rb', line 812

def paragraph_text_for(identifier)
  process_watir_call("p(identifier).text", Elements::Paragraph, identifier, nil, 'p')
end

#paragraphs_for(identifier) ⇒ Object

platform method to retrieve an array of paragraph elements


827
828
829
# File 'lib/page-object/platforms/watir/page_object.rb', line 827

def paragraphs_for(identifier)
  find_watir_elements("ps(identifier)", Elements::Paragraph, identifier, 'p')
end

#prompt(answer, frame = nil, &block) ⇒ Object

platform method to handle a prompt popup See PageObject#prompt


108
109
110
111
112
113
114
115
116
# File 'lib/page-object/platforms/watir/page_object.rb', line 108

def prompt(answer, frame=nil, &block)
  switch_to_frame(frame)
  @browser.wd.execute_script "window.prompt = function(text, value) { window.__lastWatirPrompt = { message: text, default_value: value }; return #{answer}; }"
  yield
  result = @browser.wd.execute_script "return window.__lastWatirPrompt"
  switch_to_default_content(frame)
  result && result.dup.each_key { |k| result[k.to_sym] = result.delete(k) }
  result
end

#radio_button_for(identifier) ⇒ Object

platform method to return a PageObject::Eements::RadioButton element See PageObject::Accessors#radio_button


409
410
411
# File 'lib/page-object/platforms/watir/page_object.rb', line 409

def radio_button_for(identifier)
  find_watir_element("radio(identifier)", Elements::RadioButton, identifier)
end

#radio_buttons_for(identifier) ⇒ Object

platform method to retrieve an array of radio button elements


416
417
418
# File 'lib/page-object/platforms/watir/page_object.rb', line 416

def radio_buttons_for(identifier)
  find_watir_elements("radios(identifier)", Elements::RadioButton, identifier)
end

#radio_selected?(identifier) ⇒ Boolean

platform method to determine if a radio button is selected See PageObject::Accessors#radio_button


401
402
403
# File 'lib/page-object/platforms/watir/page_object.rb', line 401

def radio_selected?(identifier)
  process_watir_call("radio(identifier).set?", Elements::RadioButton, identifier)
end

#refreshObject

platform method to refresh the page See PageObject#refresh


166
167
168
# File 'lib/page-object/platforms/watir/page_object.rb', line 166

def refresh
  @browser.refresh
end

#row_for(identifier) ⇒ Object

platform method to retrieve a table row element See PageObject::Accessors#row


552
553
554
# File 'lib/page-object/platforms/watir/page_object.rb', line 552

def row_for(identifier)
  find_watir_element("tr(identifier)", Elements::TableRow, identifier, 'tr')
end

#row_text_for(identifier) ⇒ Object

platform method to retrieve the text from a table row See PageObject::Accessors#row


543
544
545
546
# File 'lib/page-object/platforms/watir/page_object.rb', line 543

def row_text_for(identifier)
  process_watir_call("tr(identifier).text", Elements::TableRow, identifier,
                     nil, 'tr')
end

#rows_for(identifier) ⇒ Object

platform method to retrieve an array of table row elements


559
560
561
# File 'lib/page-object/platforms/watir/page_object.rb', line 559

def rows_for(identifier)
  find_watir_elements("trs(identifier)", Elements::TableRow, identifier, 'tr')
end

#save_screenshot(file_name) ⇒ Object

platform method to save the current screenshot to a file See PageObject#save_screenshot


198
199
200
# File 'lib/page-object/platforms/watir/page_object.rb', line 198

def save_screenshot(file_name)
  @browser.wd.save_screenshot(file_name)
end

#select_list_for(identifier) ⇒ Object

platform method to return the select list element See PageObject::Accessors#select_list


313
314
315
# File 'lib/page-object/platforms/watir/page_object.rb', line 313

def select_list_for(identifier)
  find_watir_element("select_list(identifier)", Elements::SelectList, identifier)
end

#select_list_value_for(identifier) ⇒ Object

platform method to get the currently selected value from a select list See PageObject::Accessors#select_list


293
294
295
296
297
298
# File 'lib/page-object/platforms/watir/page_object.rb', line 293

def select_list_value_for(identifier)
  options = find_watir_elements("select_list(identifier).selected_options",
                     Elements::SelectList, identifier)
  return nil if options.empty?
  options.first.text
end

#select_list_value_set(identifier, value) ⇒ Object

platform method to select a value from a select list See PageObject::Accessors#select_list


304
305
306
307
# File 'lib/page-object/platforms/watir/page_object.rb', line 304

def select_list_value_set(identifier, value)
  process_watir_call("select_list(identifier).select(value)", Elements::SelectList,
                     identifier, value)
end

#select_lists_for(identifier) ⇒ Object

platform method to retrieve an array of select_list elements


320
321
322
# File 'lib/page-object/platforms/watir/page_object.rb', line 320

def select_lists_for(identifier)
  find_watir_elements("select_lists(identifier)", Elements::SelectList, identifier)
end

#select_radio(identifier) ⇒ Object

platform method to select a radio button See PageObject::Accessors#radio_button


393
394
395
# File 'lib/page-object/platforms/watir/page_object.rb', line 393

def select_radio(identifier)
  process_watir_call("radio(identifier).set", Elements::RadioButton, identifier)
end

#span_for(identifier) ⇒ Object

platform method to return a PageObject::Elements::Span element See PageObject::Accessors#span


455
456
457
# File 'lib/page-object/platforms/watir/page_object.rb', line 455

def span_for(identifier)
  find_watir_element("span(identifier)", Elements::Span, identifier, 'span')
end

#span_text_for(identifier) ⇒ Object

platform method to return the text for a span See PageObject::Accessors#span


447
448
449
# File 'lib/page-object/platforms/watir/page_object.rb', line 447

def span_text_for(identifier)
  process_watir_call("span(identifier).text", Elements::Span, identifier, nil, 'span')
end

#spans_for(identifier) ⇒ Object

platform method to retrieve an array of span elements


462
463
464
# File 'lib/page-object/platforms/watir/page_object.rb', line 462

def spans_for(identifier)
  find_watir_elements("spans(identifier)", Elements::Span, identifier, 'span')
end

#svg_for(identifier) ⇒ Object

platform method to return a svg element


977
978
979
# File 'lib/page-object/platforms/watir/page_object.rb', line 977

def svg_for(identifier)
  find_watir_element("element(identifier)", Elements::Element, identifier)
end

#svgs_for(identifier) ⇒ Object

platform method to return an array of svg elements


984
985
986
# File 'lib/page-object/platforms/watir/page_object.rb', line 984

def svgs_for(identifier)
  find_watir_elements("element(identifier)", Elements::Element, identifier)
end

#table_for(identifier) ⇒ Object

platform method to retrieve a table element See PageObject::Accessors#table


504
505
506
# File 'lib/page-object/platforms/watir/page_object.rb', line 504

def table_for(identifier)
  find_watir_element("table(identifier)", Elements::Table, identifier, 'table')
end

#table_text_for(identifier) ⇒ Object

platform method to return the text for a table See PageObject::Accessors#table


496
497
498
# File 'lib/page-object/platforms/watir/page_object.rb', line 496

def table_text_for(identifier)
  process_watir_call("table(identifier).text", Elements::Table, identifier, nil, 'table')
end

#tables_for(identifier) ⇒ Object

platform method to retrieve an array of table elements


511
512
513
# File 'lib/page-object/platforms/watir/page_object.rb', line 511

def tables_for(identifier)
  find_watir_elements("tables(identifier)", Elements::Table, identifier, 'table')
end

#textObject

platform method to retrieve the text from the current page See PageObject#text


45
46
47
# File 'lib/page-object/platforms/watir/page_object.rb', line 45

def text
  @browser.text
end

#text_area_for(identifier) ⇒ Object

platform method to get the text area element See PageObject::Accessors#text_area


278
279
280
# File 'lib/page-object/platforms/watir/page_object.rb', line 278

def text_area_for(identifier)
  find_watir_element("textarea(identifier)", Elements::TextArea, identifier)
end

#text_area_value_for(identifier) ⇒ Object

platform method to get the text from a textarea See PageObject::Accessors#text_area


270
271
272
# File 'lib/page-object/platforms/watir/page_object.rb', line 270

def text_area_value_for(identifier)
  process_watir_call("textarea(identifier).value", Elements::TextArea, identifier)
end

#text_area_value_set(identifier, value) ⇒ Object

platform method to set text in a textarea See PageObject::Accessors#text_area


261
262
263
264
# File 'lib/page-object/platforms/watir/page_object.rb', line 261

def text_area_value_set(identifier, value)
  process_watir_call("textarea(identifier).set(value)", Elements::TextArea,
                     identifier, value)
end

#text_areas_for(identifier) ⇒ Object

platform method to retrieve an array of textarea elements


285
286
287
# File 'lib/page-object/platforms/watir/page_object.rb', line 285

def text_areas_for(identifier)
  find_watir_elements("textareas(identifier)", Elements::TextArea, identifier)
end

#text_field_for(identifier) ⇒ Object

platform method to retrieve a text field element See PageObject::Accessors#text_field


222
223
224
# File 'lib/page-object/platforms/watir/page_object.rb', line 222

def text_field_for(identifier)
  find_watir_element("text_field(identifier)", Elements::TextField, identifier)
end

#text_field_value_for(identifier) ⇒ Object

platform method to get the value stored in a text field See PageObject::Accessors#text_field


206
207
208
# File 'lib/page-object/platforms/watir/page_object.rb', line 206

def text_field_value_for(identifier)
  process_watir_call("text_field(identifier).value", Elements::TextField, identifier)
end

#text_field_value_set(identifier, value) ⇒ Object

platform method to set the value for a text field See PageObject::Accessors#text_field


214
215
216
# File 'lib/page-object/platforms/watir/page_object.rb', line 214

def text_field_value_set(identifier, value)
  process_watir_call("text_field(identifier).set(value)", Elements::TextField, identifier, value)
end

#text_fields_for(identifier) ⇒ Object

platform method to retrieve an array of text field elements


229
230
231
232
# File 'lib/page-object/platforms/watir/page_object.rb', line 229

def text_fields_for(identifier)
  elements = find_watir_elements("text_fields(identifier)", Elements::TextField, identifier)
  elements.select { |e| e.element.tag_name == 'input' }
end

#titleObject

platform method to retrieve the title for the current page See PageObject#title


61
62
63
# File 'lib/page-object/platforms/watir/page_object.rb', line 61

def title
  @browser.title
end

#uncheck_checkbox(identifier) ⇒ Object

platform method to uncheck a checkbox See PageObject::Accessors#checkbox


362
363
364
# File 'lib/page-object/platforms/watir/page_object.rb', line 362

def uncheck_checkbox(identifier)
  process_watir_call("checkbox(identifier).clear", Elements::CheckBox, identifier)
end

#unordered_list_for(identifier) ⇒ Object

platform method to retrieve an unordered list element See PageObject::Accessors#unordered_list


636
637
638
# File 'lib/page-object/platforms/watir/page_object.rb', line 636

def unordered_list_for(identifier)
  find_watir_element("ul(identifier)", Elements::UnorderedList, identifier, 'ul')
end

#unordered_list_text_for(identifier) ⇒ Object

platform method to retrieve the text from an unordered list See PageObject::Accessors#unordered_list


628
629
630
# File 'lib/page-object/platforms/watir/page_object.rb', line 628

def unordered_list_text_for(identifier)
  process_watir_call("ul(identifier).text", Elements::UnorderedList, identifier, nil, 'ul')
end

#unordered_lists_for(identifier) ⇒ Object

platform method to retrieve an array of unordered lists


643
644
645
# File 'lib/page-object/platforms/watir/page_object.rb', line 643

def unordered_lists_for(identifier)
  find_watir_elements("uls(identifier)", Elements::UnorderedList, identifier, 'ul')
end

#video_for(identifier) ⇒ Object

platform method to retrieve a video element


931
932
933
# File 'lib/page-object/platforms/watir/page_object.rb', line 931

def video_for(identifier)
  find_watir_element("video(identifier)", Elements::Video, identifier, 'video')
end

#videos_for(identifier) ⇒ Object

platform method to retrieve an array of video elements


938
939
940
# File 'lib/page-object/platforms/watir/page_object.rb', line 938

def videos_for(identifier)
  find_watir_elements("videos(identifier)", Elements::Video, identifier, 'video')
end

#wait_until(timeout, message = nil, &block) ⇒ Object

platform method to wait for a block to return true See PageObject#wait_until


68
69
70
# File 'lib/page-object/platforms/watir/page_object.rb', line 68

def wait_until(timeout, message = nil, &block)
  @browser.wait_until(timeout: timeout, message: message, &block)
end