Class By

java.lang.Object
org.openqa.selenium.By
Direct Known Subclasses:
By.ByClassName, By.ByCssSelector, By.ById, By.ByLinkText, By.ByName, By.ByPartialLinkText, By.ByTagName, By.ByXPath, ByAll, ByChained, ByIdOrName, RelativeLocator.RelativeBy

public abstract class By extends Object
Mechanism used to locate elements within a document. In order to create your own locating mechanisms, it is possible to subclass this class and override the protected methods as required, though it is expected that all subclasses rely on the basic finding mechanisms provided through static methods of this class:

 public WebElement findElement(WebDriver driver) {
     WebElement element = driver.findElement(By.id(getSelector()));
     if (element == null)
       element = driver.findElement(By.name(getSelector());
     return element;
 }
 
  • Constructor Details

    • By

      public By()
  • Method Details

    • id

      public static By id(String id)
      Parameters:
      id - The value of the "id" attribute to search for.
      Returns:
      A By which locates elements by the value of the "id" attribute.
    • linkText

      public static By linkText(String linkText)
      Parameters:
      linkText - The exact text to match against.
      Returns:
      A By which locates A elements by the exact text it displays.
    • partialLinkText

      public static By partialLinkText(String partialLinkText)
      Parameters:
      partialLinkText - The partial text to match against
      Returns:
      a By which locates elements that contain the given link text.
    • name

      public static By name(String name)
      Parameters:
      name - The value of the "name" attribute to search for.
      Returns:
      A By which locates elements by the value of the "name" attribute.
    • tagName

      public static By tagName(String tagName)
      Parameters:
      tagName - The element's tag name.
      Returns:
      A By which locates elements by their tag name.
    • xpath

      public static By xpath(String xpathExpression)
      Parameters:
      xpathExpression - The XPath to use.
      Returns:
      A By which locates elements via XPath.
    • className

      public static By className(String className)
      Find elements based on the value of the "class" attribute. Only one class name should be used. If an element has multiple classes, please use cssSelector(String).
      Parameters:
      className - The value of the "class" attribute to search for.
      Returns:
      A By which locates elements by the value of the "class" attribute.
    • cssSelector

      public static By cssSelector(String cssSelector)
      Find elements via the driver's underlying W3C Selector engine. If the browser does not implement the Selector API, the best effort is made to emulate the API. In this case, we strive for at least CSS2 support, but offer no guarantees.
      Parameters:
      cssSelector - CSS expression.
      Returns:
      A By which locates elements by CSS.
    • findElement

      public WebElement findElement(SearchContext context)
      Find a single element. Override this method if necessary.
      Parameters:
      context - A context to use to find the element.
      Returns:
      The WebElement that matches the selector.
    • findElements

      public abstract List<WebElement> findElements(SearchContext context)
      Find many elements.
      Parameters:
      context - A context to use to find the elements.
      Returns:
      A list of WebElements matching the selector.
    • getWebDriver

      protected WebDriver getWebDriver(SearchContext context)
    • getJavascriptExecutor

      protected JavascriptExecutor getJavascriptExecutor(SearchContext context)
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object