Search code examples
rubypage-object-gem

Parameterize the element being passed


I am using pageobjects and want to parameterize the element being passed.

Below step works fine:

text_field(:username, :id => "loginUserName")

And(/^I enter (.*) for username in LoginPage$/) do |data, actual_field|
  on_page @current_page do |page|
    page.username_element.set data
  end

But I want to parameterize the element name:

And(/^I enter (.*) for (.*) in LoginPage$/) do |data, actual_field|
  on_page @current_page do |page|
    page.get_element(actual_field).set data
  end

What method should I write to return username_element

def get_element(element_name)
  return "#{element_name}+'_element'"
end

This method returned string "username_element" so it doesnt work.

Any suggestions....


Solution

  • You can use the send method to call a method based on a String:

    page.send("#{actual_field}_element").set data