Class BasicPath

  • All Implemented Interfaces:
    Path

    public final class BasicPath
    extends Object
    implements Path
    The standard implementation of Path in DollarX
    • Method Detail

      • textNode

        public static Path textNode​(String text)
        Define a text node in the DOM, with the given text. Typically you don't need to use it, but it is relevant if you have something like:
                Male
        Female
        input.immediatelyBeforeSibling(textNode("Male"));
        Parameters:
        text - the text in the node. Note that it is trimmed, and case insensitive.
        Returns:
        a Path of a text node
      • customElement

        public static BasicPath customElement​(String el)
        Create a custom element Path using a simple API instead of the builder pattern. Example:
           Path myDiv = customElement("div");
         
        Parameters:
        el - - the element type in W3C. will be used for the toString as well.
        Returns:
        a Path representing the element
      • customNameSpaceElement

        public static BasicPath customNameSpaceElement​(String el)
      • childNumber

        public static BasicPath.ChildNumber childNumber​(Integer n)
        the element is the nth child of its parent. Count starts at 1. For example:
             childNumber(4).ofType(div.withClass("foo"))
         
        Parameters:
        n - the index of the child - starting at 1
        Returns:
        a ChildNumber instance, which is used with as in the example.
      • occurrenceNumber

        public static BasicPath.GlobalOccurrenceNumber occurrenceNumber​(Integer n)
        used in the form : occurrenceNumber(4).of(myElement)). Return the nth occurrence of the element in the entire document. Count starts at 1. For example:
             occurrenceNumber(3).of(listItem)
         
        Parameters:
        n - the number of occurrence
        Returns:
        GlobalOccurrenceNumber instance, which is used as in the example.
      • firstOccurrenceOf

        public static Path firstOccurrenceOf​(Path path)
        First global occurrence of an element in the document.
        Parameters:
        path - the element to find
        Returns:
        a new path with the added constraint
      • lastOccurrenceOf

        public static Path lastOccurrenceOf​(Path path)
        Last global occurrence of an element in the document
        Parameters:
        path - the element to find
        Returns:
        a new path with the added constraint
      • getXPath

        public Optional<String> getXPath()
        Description copied from interface: Path
        The Optional xpath is maps to. Note that the prefix that marks it is inside the document (for example; "//" as the prefix of the xpath) can be omitted. This is not a concern - it will be added automatically by DollarX when interacting with the browser.
        Specified by:
        getXPath in interface Path
        Returns:
        an optional containing the xpath this Path is mapped to. The optional is empty only in case it is used as a wrapper of a WebElement (not the typical case).
      • getAlternateXPath

        public Optional<String> getAlternateXPath()
        Specified by:
        getAlternateXPath in interface Path
        Returns:
        Should not be used unless you are developing for DollarX.
      • getUnderlyingSource

        public Optional<org.openqa.selenium.WebElement> getUnderlyingSource()
        Specified by:
        getUnderlyingSource in interface Path
        Returns:
        The WebElement that is used as the underlying reference for the Path. In most cases, this Optional is empty.
      • getDescribedBy

        public Optional<String> getDescribedBy()
        Specified by:
        getDescribedBy in interface Path
        Returns:
        optional readable functional description of the Path
      • describedBy

        public Path describedBy​(String description)
        Description copied from interface: Path
        A useful method to give a readable description to the path, for example: Suppose that instead of describing it's DOM positions and attributes, you prefer to describe it as "search result". Then you'd call: searchResult = myElement.describedBy("search result"); Now, calling System.out.println(firstOccurrenceOf(searchResult)), will print: "first occurrence of search result" This will replace its toString() result.
        Specified by:
        describedBy in interface Path
        Parameters:
        description - a readable description to that expresses the functionality of the path
        Returns:
        a new Path similar to the old one but that is described by the given description
      • or

        public Path or​(Path path)
        match more than a single path. Example: div.or(span) - matches both div and span
        Specified by:
        or in interface Path
        Parameters:
        path - the alternative path to match
        Returns:
        returns a new path that matches both the original one and the given parameter
      • that

        public Path that​(ElementProperty... prop)
        returns a path with the provided properties. For example: div.that(hasText("abc"), hasClass("foo"));
        Specified by:
        that in interface Path
        Parameters:
        prop - - one or more properties. See ElementProperties documentation for details
        Returns:
        a new path with the added constraints
      • and

        public Path and​(ElementProperty... prop)
        Alias equivalent to that(). Added for readability. Example:
             div.that(hasClass("a")).and(hasText("foo"));
         
        Specified by:
        and in interface Path
        Parameters:
        prop - a list of element properties (constraints)
        Returns:
        a new Path
      • withText

        public Path withText​(String txt)
        Element with text equals (ignoring case) to txt. Equivalent to:
             path.that(hasText(txt))
         
        Specified by:
        withText in interface Path
        Parameters:
        txt - - the text to equal to, ignoring case
        Returns:
        a new Path with the added constraint
      • inside

        public Path inside​(Path path)
        Element that is inside another element
        Specified by:
        inside in interface Path
        Parameters:
        path - - the containing element
        Returns:
        a new Path with the added constraint
      • insideTopLevel

        public Path insideTopLevel()
        Returns an element that is explicitly inside the document. This is usually not needed - it will be added implicitly when needed.
        Specified by:
        insideTopLevel in interface Path
        Returns:
        a new Path
      • afterSibling

        public Path afterSibling​(Path path)
        The element has a preceding sibling that matches to the given Path parameter
        Specified by:
        afterSibling in interface Path
        Parameters:
        path - - the sibling element that appears before
        Returns:
        a new path with the added constraint
      • immediatelyAfterSibling

        public Path immediatelyAfterSibling​(Path path)
        The sibling right before the current element matches to the given Path parameter
        Specified by:
        immediatelyAfterSibling in interface Path
        Parameters:
        path - - the sibling element that appears right before
        Returns:
        a new path with the added constraint
      • after

        public Path after​(Path path)
        The element appears after the given path
        Specified by:
        after in interface Path
        Parameters:
        path - - the element that appear before
        Returns:
        a new path with the added constraint
      • beforeSibling

        public Path beforeSibling​(Path path)
        The element is a sibling of the given path and appears before it
        Specified by:
        beforeSibling in interface Path
        Parameters:
        path - - the sibling element that appears after
        Returns:
        a new path with the added constraint
      • immediatelyBeforeSibling

        public Path immediatelyBeforeSibling​(Path path)
        The sibling right after the element matches the given path parameter
        Specified by:
        immediatelyBeforeSibling in interface Path
        Parameters:
        path - - the sibling element that appears after
        Returns:
        a new path with the added constraint
      • before

        public Path before​(Path path)
        The element is before the given path parameter
        Specified by:
        before in interface Path
        Parameters:
        path - - the element that appear after
        Returns:
        a new path with the added constraint
      • childOf

        public Path childOf​(Path path)
        Description copied from interface: Path
        The element is a direct child of the given path
        Specified by:
        childOf in interface Path
        Parameters:
        path - - the parent element
        Returns:
        a new path with the added constraint
      • parentOf

        public Path parentOf​(Path path)
        Description copied from interface: Path
        The element is a parent of the given path
        Specified by:
        parentOf in interface Path
        Parameters:
        path - - the child element
        Returns:
        a new path with the added constraint
      • containing

        public Path containing​(Path path)
        Description copied from interface: Path
        The element contains the given path, i.e. the given path parameter is inside the element
        Specified by:
        containing in interface Path
        Parameters:
        path - - the element that is inside our element
        Returns:
        a new path with the added constraint
      • contains

        public Path contains​(Path path)
        Description copied from interface: Path
        The element contains the given path, i.e. the given path parameter is inside the element
        Specified by:
        contains in interface Path
        Parameters:
        path - - the element that is inside our element
        Returns:
        a new path with the added constraint
      • ancestorOf

        public Path ancestorOf​(Path path)
        Description copied from interface: Path
        The element contains the given path, i.e. the given path parameter is inside the element
        Specified by:
        ancestorOf in interface Path
        Parameters:
        path - - the element that is inside our element
        Returns:
        a new path with the added constraint
      • descendantOf

        public Path descendantOf​(Path path)
        The element is inside the given path parameter
        Specified by:
        descendantOf in interface Path
        Parameters:
        path - - the element that is wrapping our element
        Returns:
        a new path with the added constraint
      • withGlobalIndex

        public Path withGlobalIndex​(Integer n)
        An alias of: occurrenceNumber(n + 1).of(this)
        Specified by:
        withGlobalIndex in interface Path
        Parameters:
        n - - the global occurrence index of the path, starting from 0
        Returns:
        a new path with the added constraint
      • withClass

        public Path withClass​(String cssClass)
        Equivalent to this.that(hasClass(cssClass))
        Specified by:
        withClass in interface Path
        Parameters:
        cssClass - the class name
        Returns:
        a new path with the added constraint
      • withClasses

        public Path withClasses​(String... cssClasses)
        Equivalent to this.that(hasClasses(cssClasses))
        Specified by:
        withClasses in interface Path
        Parameters:
        cssClasses - the class names
        Returns:
        a new path with the added constraint
      • withTextContaining

        public Path withTextContaining​(String txt)
        Equivalent to this.that(hasTextContaining(txt)).
        Specified by:
        withTextContaining in interface Path
        Parameters:
        txt - the text to match to. The match is case insensitive.
        Returns:
        a new path with the added constraint