     else
       @locator
 
+  ###
+  Helps pass through custom wait time to `get`, `getAll`, and `waitClick` if provided.
+  *Intended for internal use*, but exposed for extensibility if need.
+
+  @param {Function} waitFunction The wait function to wrap
+  @param {Any} args... Any number of parameters for `locator` to use if `locator` is a function dependent on parameters
+  @param {Number} waitMs The last parameter, if provided and is a number.
+  @returns {Function}
+  ###
   aliasWait: (waitFunction, args...) =>
     locator = @getLocator(args...)
 


    waitFunction(locator, waitTime)

  # methods that wait until elements are available before running
  get: (args...) =>
    @aliasWait(@test.utils.wait.for, args...)

  getAll: (args...) =>
    @aliasWait(@test.utils.wait.forMultiple, args...)

  # Helper for the common case of `wait.for(...).click()`.
  # Plus, it allows a place to add logging since this is one of the most
  # common places for Selenium to time out (trying to click on an element)
  waitClick: (args...) =>
    @aliasWait(@test.utils.wait.click, args...)

  # methods that will try to run as soon as you call them
  findElement: (args...) =>
    locator = @getLocator(args...)
    @test.driver.findElement(locator)

  findElements: (args...) =>
    locator = @getLocator(args...)
    @test.driver.findElements(locator)

  # Helper for the common case of `findElement(...).click()`.
  click: (args...) =>
    @findElement(args...).click()

  forEach: (args..., forEachFunction, forEachFunction2) =>
    locator = @getLocator(args...)
    @test.utils.forEach(locator, forEachFunction, forEachFunction2)

  isPresent: (args...) =>
    locator = @getLocator(args...)
    @test.driver.isElementPresent(locator)

  isDisplayed: (args...) =>
    @isPresent(args...).then (isPresent) =>
      if isPresent


    @

  ###
  Takes the internally set `locator` and returns the corresponding valid Selenium selector.

  Can take arguments to pass into `locator` if `locator` is parameter dependent.

  @param {Any} args... Any number of parameters for `locator` to use if `locator` is a function dependent on parameters
  @returns {Selenium.Locator}
  ###
  getLocator: (args...) =>
    locator = if _.isFunction(@locator)
      @locator(args...)
