Interface WebDriver

All Superinterfaces:
SearchContext
All Known Implementing Classes:
ChromeDriver, ChromiumDriver, EdgeDriver, FirefoxDriver, InternetExplorerDriver, RemoteWebDriver, SafariDriver

@NullMarked public interface WebDriver extends SearchContext
WebDriver is a remote control interface that enables introspection and control of user agents (browsers). The methods in this interface fall into three categories:
  • Control of the browser itself
  • Selection of WebElements
  • Debugging aids

Key methods are get(String), which is used to load a new web page, and the various methods similar to findElement(By), which is used to find WebElements.

Currently, you will need to instantiate implementations of this interface directly. It is hoped that you write your tests against this interface so that you may "swap in" a more fully featured browser when there is a requirement for one.

Most implementations of this interface follow W3C WebDriver specification

  • Method Details

    • get

      void get(String url)
      Load a new web page in the current browser window. This is done using an HTTP POST operation, and the method will block until the load is complete (with the default 'page load strategy'. This will follow redirects issued either by the server or as a meta-redirect from within the returned HTML. Should a meta-redirect "rest" for any duration of time, it is best to wait until this timeout is over, since should the underlying page change whilst your test is executing the results of future calls against this interface will be against the freshly loaded page. Synonym for WebDriver.Navigation.to(String).

      See W3C WebDriver specification for more details.

      Parameters:
      url - The URL to load. Must be a fully qualified URL
      See Also:
    • getCurrentUrl

      @Nullable String getCurrentUrl()
      Get a string representing the current URL that the browser is looking at.

      See W3C WebDriver specification for more details.

      Returns:
      The URL of the page currently loaded in the browser
    • getTitle

      @Nullable String getTitle()
      Get the title of the current page.

      See W3C WebDriver specification for more details.

      Returns:
      The title of the current page, with leading and trailing whitespace stripped, or null if one is not already set
    • findElements

      List<WebElement> findElements(By by)
      Find all elements within the current page using the given mechanism. This method is affected by the 'implicit wait' times in force at the time of execution. When implicitly waiting, this method will return as soon as there are more than 0 items in the found collection, or will return an empty list if the timeout is reached.

      See W3C WebDriver specification for more details.

      Specified by:
      findElements in interface SearchContext
      Parameters:
      by - The locating mechanism to use
      Returns:
      A list of all matching WebElements, or an empty list if nothing matches
      See Also:
    • findElement

      WebElement findElement(By by)
      Find the first WebElement using the given method. This method is affected by the 'implicit wait' times in force at the time of execution. The findElement(..) invocation will return a matching row, or try again repeatedly until the configured timeout is reached.

      findElement should not be used to look for non-present elements, use findElements(By) and assert zero length response instead.

      See W3C WebDriver specification for more details.

      Specified by:
      findElement in interface SearchContext
      Parameters:
      by - The locating mechanism to use
      Returns:
      The first matching element on the current page
      Throws:
      NoSuchElementException - If no matching elements are found
      See Also:
    • getPageSource

      @Nullable String getPageSource()
      Get the source of the last loaded page. If the page has been modified after loading (for example, by Javascript) there is no guarantee that the returned text is that of the modified page. Please consult the documentation of the particular driver being used to determine whether the returned text reflects the current state of the page or the text last sent by the web server. The page source returned is a representation of the underlying DOM: do not expect it to be formatted or escaped in the same way as the response sent from the web server. Think of it as an artist's impression.

      See W3C WebDriver specification for more details.

      Returns:
      The source of the current page
    • close

      void close()
      Close the current window, quitting the browser if it's the last window currently open.

      See W3C WebDriver specification for more details.

    • quit

      void quit()
      Quits this driver, closing every associated window.
    • getWindowHandles

      Set<String> getWindowHandles()
      Return a set of window handles which can be used to iterate over all open windows of this WebDriver instance by passing them to switchTo().WebDriver.Options.window()

      See W3C WebDriver specification for more details.

      Returns:
      A set of window handles which can be used to iterate over all open windows.
    • getWindowHandle

      String getWindowHandle()
      Return an opaque handle to this window that uniquely identifies it within this driver instance. This can be used to switch to this window at a later date

      See W3C WebDriver specification for more details.

      Returns:
      the current window handle
    • switchTo

      Send future commands to a different frame or window.
      Returns:
      A TargetLocator which can be used to select a frame or window
      See Also:
    • manage

      Gets the Option interface
      Returns:
      An option interface
      See Also: