class PageObject::Platforms::SeleniumWebDriver::PageObject

Selenium 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.

Public Class Methods

new(browser) click to toggle source
# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 15
def initialize(browser)
  @browser = browser
end

Public Instance Methods

alert(frame=nil) { || ... } click to toggle source

platform method to handle an alert popup See PageObject#alert

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 72
def alert(frame=nil, &block)
  yield
  begin
    alert = @browser.switch_to.alert
    value = alert.text
    alert.accept
  rescue Selenium::WebDriver::Error::NoAlertPresentError
  end
  value
end
area_for(identifier) click to toggle source

platform method to retrieve an area element

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 922
def area_for(identifier)
  find_selenium_element(identifier, Elements::Area, 'area')
end
areas_for(identifier) click to toggle source

platform method to return an array of area elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 929
def areas_for(identifier)
  find_selenium_elements(identifier, Elements::Area, 'area')
end
attach_to_window(identifier, &block) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 122
def attach_to_window(identifier, &block)
  value = identifier.values.first
  key = identifier.keys.first
  handles = @browser.window_handles
  handles.each do |handle|
    @browser.switch_to.window handle
    if (key == :title and value == @browser.title) or
      (key == :url and @browser.current_url.include?(value))
      return @browser.switch_to.window handle, &block
    end
  end
end
audio_for(identifier) click to toggle source

platform method to retrieve an audio element

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 950
def audio_for(identifier)
  find_selenium_element(identifier, Elements::Audio, 'audio')
end
audios_for(identifier) click to toggle source

platform method to return an array of audio elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 957
def audios_for(identifier)
  find_selenium_elements(identifier, Elements::Audio, 'audio')
end
back() click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 177
def back
  @browser.navigate.back
end
button_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 517
def button_for(identifier)
  find_selenium_element(identifier, Elements::Button, 'input', :type => 'submit')
end
buttons_for(identifier) click to toggle source

platform method to retrieve an array of button elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 524
def buttons_for(identifier)
  find_selenium_elements(identifier, Elements::Button, 'input', :type => 'submit')
end
canvas_for(identifier) click to toggle source

platform method to retrieve a canvas element

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 936
def canvas_for(identifier)
  find_selenium_element(identifier, Elements::Canvas, 'canvas')
end
canvass_for(identifier) click to toggle source

platform method to return an array of canvas elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 943
def canvass_for(identifier)
  find_selenium_elements(identifier, Elements::Canvas, 'canvas')
end
cell_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 567
def cell_for(identifier)
  find_selenium_element(identifier, Elements::TableCell, 'td')
end
cell_text_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 557
def cell_text_for(identifier)
  process_selenium_call(identifier, Elements::TableCell, 'td') do |how, what|
    @browser.find_element(how, what).text
  end
end
cells_for(identifier) click to toggle source

platform method to retrieve all table cell elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 574
def cells_for(identifier)
  find_selenium_elements(identifier, Elements::TableCell, 'td')
end
check_checkbox(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 377
def check_checkbox(identifier)
  process_selenium_call(identifier, Elements::CheckBox, 'input', :type => 'checkbox') do |how, what|
    @browser.find_element(how, what).click unless @browser.find_element(how, what).selected?
  end
end
checkbox_checked?(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 397
def checkbox_checked?(identifier)
  process_selenium_call(identifier, Elements::CheckBox, 'input', :type => 'checkbox') do |how, what|
    @browser.find_element(how, what).selected?
  end
end
checkbox_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 407
def checkbox_for(identifier)
  find_selenium_element(identifier, Elements::CheckBox, 'input', :type => 'checkbox')
end
checkboxs_for(identifier) click to toggle source

platform method to retrieve all checkbox elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 414
def checkboxs_for(identifier)
  find_selenium_elements(identifier, Elements::CheckBox, 'input', :type => 'checkbox')
end
clear_cookies() click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 193
def clear_cookies
  @browser.manage.delete_all_cookies
end
click_area_for(identifier) click to toggle source

platform method to click on an area

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 913
def click_area_for(identifier)
  process_selenium_call(identifier, Elements::Area, 'area') do |how, what|
    @browser.find_element(how, what).click
  end
end
click_button_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 507
def click_button_for(identifier)
  process_selenium_call(identifier, Elements::Button, 'input', :type => 'submit') do |how, what|
    @browser.find_element(how, what).click
  end
end
confirm(response, frame=nil) { || ... } click to toggle source

platform method to handle a confirm popup See PageObject#confirm

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 87
def confirm(response, frame=nil, &block)
  yield
  begin
    alert = @browser.switch_to.alert
    value = alert.text
    response ? alert.accept : alert.dismiss
  rescue Selenium::WebDriver::Error::NoAlertPresentError
  end
  value
end
current_url() click to toggle source

platform method to get the current url See PageObject#current_url

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 31
def current_url
  @browser.current_url
end
div_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 467
def div_for(identifier)
  find_selenium_element(identifier, Elements::Div, 'div')
end
div_text_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 457
def div_text_for(identifier)
  process_selenium_call(identifier, Elements::Div, 'div') do |how, what|
    @browser.find_element(how, what).text
  end
end
divs_for(identifier) click to toggle source

platform method to retrieve all div elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 474
def divs_for(identifier)
  find_selenium_elements(identifier, Elements::Div, 'div')
end
element_for(tag, identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 979
def element_for(tag, identifier)
  find_selenium_element(identifier, Elements::Element, tag.to_s)
end
element_with_focus() click to toggle source

find the element that has focus

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 138
def element_with_focus
  element = @browser.execute_script("return document.activeElement")
  type = element.attribute(:type).to_s.downcase if element.tag_name.to_sym == :input
  cls = ::PageObject::Elements.element_class_for(element.tag_name, type)
  cls.new(element, :platform => :selenium_webdriver)
end
elements_for(tag, identifier) click to toggle source

platform method to retrieve a collection of generic elements See PageObject::Accessors#elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 987
def elements_for(tag, identifier)
  find_selenium_elements(identifier, Elements::Element, tag.to_s)
end
execute_script(script, *args) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 114
def execute_script(script, *args)
  @browser.execute_script(script, *args)
end
file_field_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 899
def file_field_for(identifier)
  find_selenium_element(identifier, Elements::FileField, 'input', :type => 'file')
end
file_field_value_set(identifier, value) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 889
def file_field_value_set(identifier, value)
  process_selenium_call(identifier, Elements::FileField, 'input', :type => 'file') do |how, what|
    @browser.find_element(how, what).send_keys(value)
  end
end
file_fields_for(identifier) click to toggle source

platform method to return an array of file field elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 906
def file_fields_for(identifier)
  find_selenium_elements(identifier, Elements::FileField, 'input', :type => 'file')
end
form_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 597
def form_for(identifier)
  find_selenium_element(identifier, Elements::Form, 'form')
end
forms_for(identifier) click to toggle source

platform method to retrieve all forms

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 604
def forms_for(identifier)
  find_selenium_elements(identifier, Elements::Form, 'form')
end
forward() click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 185
def forward
  @browser.navigate.forward
end
h1_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 697
def h1_for(identifier)
  find_selenium_element(identifier, Elements::Heading, 'h1')
end
h1_text_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 687
def h1_text_for(identifier)
  process_selenium_call(identifier, Elements::Heading, 'h1') do |how, what|
    @browser.find_element(how, what).text
  end
end
h1s_for(identifier) click to toggle source

platform method to retrieve all h1 elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 704
def h1s_for(identifier)
  find_selenium_elements(identifier, Elements::Heading, 'h1')
end
h2_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 722
def h2_for(identifier)
  find_selenium_element(identifier, Elements::Heading, 'h2')
end
h2_text_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 712
def h2_text_for(identifier)
  process_selenium_call(identifier, Elements::Heading, 'h2') do |how, what|
    @browser.find_element(how, what).text
  end
end
h2s_for(identifier) click to toggle source

platform method to retrieve all h2 elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 729
def h2s_for(identifier)
  find_selenium_elements(identifier, Elements::Heading, 'h2')
end
h3_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 747
def h3_for(identifier)
  find_selenium_element(identifier, Elements::Heading, 'h3')
end
h3_text_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 737
def h3_text_for(identifier)
  process_selenium_call(identifier, Elements::Heading, 'h3') do |how, what|
    @browser.find_element(how, what).text
  end
end
h3s_for(identifier) click to toggle source

platform method to retrieve all h3 elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 754
def h3s_for(identifier)
  find_selenium_elements(identifier, Elements::Heading, 'h3')
end
h4_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 772
def h4_for(identifier)
  find_selenium_element(identifier, Elements::Heading, 'h4')
end
h4_text_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 762
def h4_text_for(identifier)
  process_selenium_call(identifier, Elements::Heading, 'h4') do |how, what|
    @browser.find_element(how, what).text
  end
end
h4s_for(identifier) click to toggle source

platform method to retrieve all h4 elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 779
def h4s_for(identifier)
  find_selenium_elements(identifier, Elements::Heading, 'h4')
end
h5_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 797
def h5_for(identifier)
  find_selenium_element(identifier, Elements::Heading, 'h5')
end
h5_text_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 787
def h5_text_for(identifier)
  process_selenium_call(identifier, Elements::Heading, 'h5') do |how, what|
    @browser.find_element(how, what).text
  end
end
h5s_for(identifier) click to toggle source

platform method to retrieve all h5 elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 804
def h5s_for(identifier)
  find_selenium_elements(identifier, Elements::Heading, 'h5')
end
h6_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 822
def h6_for(identifier)
  find_selenium_element(identifier, Elements::Heading, 'h6')
end
h6_text_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 812
def h6_text_for(identifier)
  process_selenium_call(identifier, Elements::Heading, 'h6') do |how, what|
    @browser.find_element(how, what).text
  end
end
h6s_for(identifier) click to toggle source

platform method to retrieve all h6 elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 829
def h6s_for(identifier)
  find_selenium_elements(identifier, Elements::Heading, 'h6')
end
hidden_field_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 256
def hidden_field_for(identifier)
  find_selenium_element(identifier, Elements::HiddenField, 'input', :type => 'hidden')
end
hidden_field_value_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 246
def hidden_field_value_for(identifier)
  process_selenium_call(identifier, Elements::HiddenField, 'input', :type => 'hidden') do |how, what|
    @browser.find_element(how, what).attribute('value')
  end
end
hidden_fields_for(identifier) click to toggle source

platform method to retrieve all hidden field elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 263
def hidden_fields_for(identifier)
  find_selenium_elements(identifier, Elements::HiddenField, 'input', :type => 'hidden')
end
html() click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 47
def html
  @browser.page_source
end
image_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 582
def image_for(identifier)
  find_selenium_element(identifier, Elements::Image, 'img')
end
images_for(identifier) click to toggle source

platform method to retrieve all image elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 589
def images_for(identifier)
  find_selenium_elements(identifier, Elements::Image, 'img')
end
in_frame(identifier, frame=nil, &block) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 149
def in_frame(identifier, frame=nil, &block)
  switch_to_frame([frame: identifier])
  block.call(nil)
  @browser.switch_to.default_content
end
in_iframe(identifier, frame=nil, &block) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 159
def in_iframe(identifier, frame=nil, &block)
  switch_to_frame([iframe: identifier])
  block.call(nil)
  @browser.switch_to.default_content
end
label_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 873
def label_for(identifier)
  find_selenium_element(identifier, Elements::Label, 'label')
end
label_text_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 862
def label_text_for(identifier)
  process_selenium_call(identifier, Elements::Label, 'label') do |how, what|
    @browser.find_element(how, what).text
  end
end
labels_for(identifier) click to toggle source

platform method to retrieve all label elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 881
def labels_for(identifier)
  find_selenium_elements(identifier, Elements::Label, 'label')
end
list_item_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 622
def list_item_for(identifier)
  find_selenium_element(identifier, Elements::ListItem, 'li')
end
list_item_text_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 612
def list_item_text_for(identifier)
  process_selenium_call(identifier, Elements::ListItem, 'li') do |how, what|
    @browser.find_element(how, what).text
  end
end
list_items_for(identifier) click to toggle source

platform method to retrieve all list items

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 629
def list_items_for(identifier)
  find_selenium_elements(identifier, Elements::ListItem, 'li')
end
navigate_to(url) click to toggle source

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

ordered_list_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 672
def ordered_list_for(identifier)
  find_selenium_element(identifier, Elements::OrderedList, 'ol')
end
ordered_list_text_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 662
def ordered_list_text_for(identifier)
  process_selenium_call(identifier, Elements::OrderedList, 'ol') do |how, what|
    @browser.find_element(how, what).text
  end
end
ordered_lists_for(identifier) click to toggle source

platform method to retrieve all ordered lists

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 679
def ordered_lists_for(identifier)
  find_selenium_elements(identifier, Elements::OrderedList, 'ol')
end
paragraph_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 847
def paragraph_for(identifier)
  find_selenium_element(identifier, Elements::Paragraph, 'p')
end
paragraph_text_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 837
def paragraph_text_for(identifier)
  process_selenium_call(identifier, Elements::Paragraph, 'p') do |how, what|
    @browser.find_element(how, what).text
  end
end
paragraphs_for(identifier) click to toggle source

platform method to retrieve all paragraph elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 854
def paragraphs_for(identifier)
  find_selenium_elements(identifier, Elements::Paragraph, 'p')
end
prompt(answer, frame=nil) { || ... } click to toggle source

platform method to handle a prompt popup See PageObject#prompt

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 102
def prompt(answer, frame=nil, &block)
  @browser.execute_script "window.prompt = function(text, value) { window.__lastWatirPrompt = { message: text, default_value: value }; return #{answer}; }"
  yield
  result = @browser.execute_script "return window.__lastWatirPrompt"
  result && result.dup.each_key { |k| result[k.to_sym] = result.delete(k) }
  result
end
radio_button_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 442
def radio_button_for(identifier)
  find_selenium_element(identifier, Elements::RadioButton, 'input', :type => 'radio')
end
radio_buttons_for(identifier) click to toggle source

platform method to retrieve all radio button elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 449
def radio_buttons_for(identifier)
  find_selenium_elements(identifier, Elements::RadioButton, 'input', :type => 'radio')
end
radio_selected?(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 432
def radio_selected?(identifier)
  process_selenium_call(identifier, Elements::RadioButton, 'input', :type => 'radio') do |how, what|
    @browser.find_element(how, what).selected?
  end
end
refresh() click to toggle source

platform method to refresh the page See PageObject#refresh

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 169
def refresh
  @browser.navigate.refresh
end
save_screenshot(file_name) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 201
def save_screenshot(file_name)
  @browser.save_screenshot(file_name)
end
select_list_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 337
def select_list_for(identifier)
  find_selenium_element(identifier, Elements::SelectList, 'select')
end
select_list_value_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 308
def select_list_value_for(identifier)
  process_selenium_call(identifier, Elements::SelectList, 'select') do |how, what|
    selected = nil
    @browser.find_element(how, what).find_elements(:tag_name => 'option').each do |o|
      if selected.nil?
        selected = o.text if o.selected?
      end
    end
    selected
  end
end
select_list_value_set(identifier, value) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 324
def select_list_value_set(identifier, value)
  process_selenium_call(identifier, Elements::SelectList, 'select') do |how, what|
    select_list = @browser.find_element(how, what)
    select_list.find_elements(:tag_name => 'option').find do |option|
      option.text == value
    end.click
  end
end
select_lists_for(identifier) click to toggle source

platform method to retrieve all select list elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 344
def select_lists_for(identifier)
  find_selenium_elements(identifier, Elements::SelectList, 'select')
end
select_radio(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 422
def select_radio(identifier)
  process_selenium_call(identifier, Elements::RadioButton, 'input', :type => 'radio') do |how, what|
    @browser.find_element(how, what).click unless @browser.find_element(how, what).selected?
  end
end
span_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 492
def span_for(identifier)
  find_selenium_element(identifier, Elements::Span, 'span')
end
span_text_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 482
def span_text_for(identifier)
  process_selenium_call(identifier, Elements::Span, 'span') do |how, what|
    @browser.find_element(how, what).text
  end
end
spans_for(identifier) click to toggle source

platform method to retrieve all span elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 499
def spans_for(identifier)
  find_selenium_elements(identifier, Elements::Span, 'span')
end
svg_for(identifier) click to toggle source

platform method to return a svg element

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 994
def svg_for(identifier)
  find_selenium_element(identifier, Elements::Element, 'svg')
end
svgs_for(identifier) click to toggle source

platform method to return an array of svg elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 1001
def svgs_for(identifier)
  find_selenium_elements(identifier, Elements::Element, 'svg')
end
table_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 542
def table_for(identifier)
  find_selenium_element(identifier, Elements::Table, 'table')
end
table_text_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 532
def table_text_for(identifier)
  process_selenium_call(identifier, Elements::Table, 'table') do |how, what|
    @browser.find_element(how, what).text
  end
end
tables_for(identifier) click to toggle source

platform method to retrieve all table elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 549
def tables_for(identifier)
  find_selenium_elements(identifier, Elements::Table, 'table')
end
text() click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 39
def text
  @browser.find_element(:tag_name, 'body').text
end
text_area_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 293
def text_area_for(identifier)
  find_selenium_element(identifier, Elements::TextArea, 'textarea')
end
text_area_value_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 283
def text_area_value_for(identifier)
  process_selenium_call(identifier, Elements::TextArea, 'textarea') do |how, what|
    @browser.find_element(how, what).attribute('value')
  end
end
text_area_value_set(identifier, value) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 271
def text_area_value_set(identifier, value)
  process_selenium_call(identifier, Elements::TextArea, 'textarea') do |how, what|
    text_area = @browser.find_element(how, what)
    text_area.clear
    text_area.send_keys(value)
  end
end
text_areas_for(identifier) click to toggle source

platform method to retrieve all text area elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 300
def text_areas_for(identifier)
  find_selenium_elements(identifier, Elements::TextArea, 'textarea')
end
text_field_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 231
def text_field_for(identifier)
  find_selenium_element(identifier, Elements::TextField, 'input', :type => 'text')
end
text_field_value_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 209
def text_field_value_for(identifier)
  process_selenium_call(identifier, Elements::TextField, 'input', :type => 'text') do |how, what|
    @browser.find_element(how, what).attribute('value')
  end
end
text_field_value_set(identifier, value) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 220
def text_field_value_set(identifier, value)
  process_selenium_call(identifier, Elements::TextField, 'input', :type => 'text') do |how, what|
    @browser.find_element(how, what).clear
    @browser.find_element(how, what).send_keys(value)
  end
end
text_fields_for(identifier) click to toggle source

platform method to retrieve all text field elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 238
def text_fields_for(identifier)
  find_selenium_elements(identifier, Elements::TextField, 'input', :type => 'text')
end
title() click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 55
def title
  @browser.title
end
uncheck_checkbox(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 387
def uncheck_checkbox(identifier)
  process_selenium_call(identifier, Elements::CheckBox, 'input', :type => 'checkbox') do |how, what|
    @browser.find_element(how, what).click if @browser.find_element(how, what).selected?
  end
end
unordered_list_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 647
def unordered_list_for(identifier)
  find_selenium_element(identifier, Elements::UnorderedList, 'ul')
end
unordered_list_text_for(identifier) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 637
def unordered_list_text_for(identifier)
  process_selenium_call(identifier, Elements::UnorderedList, 'ul') do |how, what|
    @browser.find_element(how, what).text
  end
end
unordered_lists_for(identifier) click to toggle source

platform method to retrieve all unordered lists

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 654
def unordered_lists_for(identifier)
  find_selenium_elements(identifier, Elements::UnorderedList, 'ul')
end
video_for(identifier) click to toggle source

platform method to retrieve a video element

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 964
def video_for(identifier)
  find_selenium_element(identifier, Elements::Video, 'video')
end
videos_for(identifier) click to toggle source

platform method to return an array of video elements

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 971
def videos_for(identifier)
  find_selenium_elements(identifier, Elements::Video, 'video')
end
wait_until(timeout, message = nil, &block) click to toggle source

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

# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 63
def wait_until(timeout, message = nil, &block)
  wait = ::Selenium::WebDriver::Wait.new({:timeout => timeout, :message => message})
  wait.until &block
end

Private Instance Methods

add_tagname_if_needed(identifier, tag, additional=nil) click to toggle source
# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 1071
def add_tagname_if_needed identifier, tag, additional=nil
  return identifier if identifier.length < 2 and supported_identifier(identifier, tag, additional)
  identifier[:tag_name] = tag
  if additional
    additional.each do |key, value|
      identifier[key] = value
    end
  end
  identifier
end
build_null_object(identifier, type, tag, other) click to toggle source
# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 1048
def build_null_object(identifier, type, tag, other)
  null_element = SurrogateSeleniumElement.new
  null_element.identifier = identifier
  null_element.type = type
  null_element.tag = tag
  null_element.other = other
  null_element.platform = self
  Elements::Element.new(null_element, :platform => :selenium_webdriver)
end
delete_regexp(identifier) click to toggle source
# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 1058
def delete_regexp(identifier)
  regexp = identifier.find {|ident| ident[1].is_a?(Regexp)}
  identifier.delete(regexp[0]) if regexp
  regexp
end
fetch_value(element, how) click to toggle source
# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 1111
def fetch_value(element, how)
  case how
  when :text
    element.text
  when :tag_name
    element.tag_name.downcase
  when :href
    (href = element.attribute(:href)) && href.strip
  else
    element.attribute(how.to_s.gsub("_", "-").to_sym)
  end
end
find_selenium_element(identifier, type, tag, other=nil) click to toggle source
# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 1015
def find_selenium_element(identifier, type, tag, other=nil)
  regexp = delete_regexp(identifier)
  how, what, frame_identifiers = parse_identifiers(identifier, type, tag, other)
  switch_to_frame(frame_identifiers)
  begin
    unless regexp
      element = @browser.find_element(how, what)
    else
      elements = @browser.find_elements(how, what)
      element = elements.find {|ele| matches_selector?(ele, regexp[0], regexp[1])}
    end
  rescue Selenium::WebDriver::Error::NoSuchElementError
    @browser.switch_to.default_content unless frame_identifiers.nil?
    return build_null_object(identifier, type, tag, other)
  end
  @browser.switch_to.default_content unless frame_identifiers.nil?
  type.new(element, :platform => :selenium_webdriver)
end
find_selenium_elements(identifier, type, tag, other=nil) click to toggle source
# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 1034
def find_selenium_elements(identifier, type, tag, other=nil)
  regexp = delete_regexp(identifier)
  how, what, frame_identifiers = parse_identifiers(identifier, type, tag, other)
  switch_to_frame(frame_identifiers)
  unless regexp
    elements = @browser.find_elements(how, what)
  else
    eles = @browser.find_elements(how, what)
    elements = eles.find_all {|ele| matches_selector?(ele, regexp[0], regexp[1])}
  end
  @browser.switch_to.default_content unless frame_identifiers.nil?
  elements.map { |element| type.new(element, :platform => :selenium_webdriver) }
end
matches_selector?(element, how, what) click to toggle source
# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 1107
def matches_selector?(element, how, what)
  what === fetch_value(element, how)
end
parse_identifiers(identifier, element, tag_name=nil, additional=nil) click to toggle source
# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 1064
def parse_identifiers(identifier, element, tag_name=nil, additional=nil)
  frame_identifiers = identifier.delete(:frame)
  identifier = add_tagname_if_needed identifier, tag_name, additional if tag_name
  how, what = element.selenium_identifier_for identifier
  return how, what, frame_identifiers
end
process_selenium_call(identifier, type, tag, other=nil) { |how, what| ... } click to toggle source
# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 1007
def process_selenium_call(identifier, type, tag, other=nil)
  how, what, frame_identifiers = parse_identifiers(identifier, type, tag, other)
  switch_to_frame(frame_identifiers)
  value = yield how, what
  @browser.switch_to.default_content unless frame_identifiers.nil?
  value
end
supported_identifier(identifier, tag, additional) click to toggle source
# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 1082
def supported_identifier(identifier, tag, additional)
  return false if identifier.size == 0
  return false if identifier[:index]
  return false if identifier[:action] and tag == 'form'
  return false if identifier[:alt] and tag == 'img'
  return false if identifier[:alt] and tag == 'input' and
    ['submit', 'image', 'button', 'reset'].include? additional[:type]
  return false if identifier[:href] and tag == 'a'
  return false if identifier[:src] and tag == 'input' and
    ['submit', 'image', 'button', 'reset'].include? additional[:type]
  return false if identifier[:src] and tag == 'img'
  return false if identifier[:label]
  return false if identifier[:text] and tag == 'input' and additional[:type] == 'hidden'
  return false if identifier[:text] and tag == 'input' and additional[:type] == 'text'
  return false if identifier[:text] and ['div', 'span', 'td', 'label', 'li'].include? tag
  return false if identifier[:title] and tag == 'input' and additional[:type] == 'text'
  return false if identifier[:title] and tag == 'input' and additional[:type] == 'file'
  return false if identifier[:title] and tag == 'a'
  return false if identifier[:title] and tag == 'span'
  return false if identifier[:title] and tag == 'div'
  return false if identifier[:value] and tag == 'input' and
    ['radio', 'submit', 'image', 'button', 'reset', 'checkbox', 'hidden'].include? additional[:type]
  true
end
switch_to_frame(frame_identifiers) click to toggle source
# File lib/page-object/platforms/selenium_webdriver/page_object.rb, line 1124
def switch_to_frame(frame_identifiers)
  unless frame_identifiers.nil?
    frame_identifiers.each do |frame|
      frame_id = frame.values.first
      value = frame_id.values.first
      @browser.switch_to.frame(value)
    end
  end
end