cheezy / page-object

Gem to implement PageObject pattern in watir-webdriver and selenium-webdriver
MIT License
653 stars 220 forks source link

Make tag name optional in dynamic element locator #491

Open jkotests opened 5 years ago

jkotests commented 5 years ago

As noted in a recent Stack Overflow question, the dynamic element locator requires the tag name to be specified. This is pretty awkward looking when the tag name is unknown:

class MyPage
  include PageObject

  def do_stuff
    element('element', class: 'class_name').text
  end
end

We should make the tag name optional. Instead the tag name should be specified like any other locator:

# When the tag name is unknown
element(class: 'class_name')

# When the tag name is known
element(tag_name: 'custom_tag', class: 'class_name')
jkotests commented 4 years ago

This is complicated by the fact that the "tag" is actually used to determine the corresponding Watir method - see https://stackoverflow.com/a/59076811/1200545.