Class AjaxElementLocator

  • All Implemented Interfaces:
    ElementLocator

    public class AjaxElementLocator
    extends DefaultElementLocator
    An element locator that will wait for the specified number of seconds for an element to appear, rather than failing instantly if it's not present. This works by polling the UI on a regular basis. The element returned will be present on the DOM, but may not actually be visible: override isElementUsable(WebElement) if this is important to you. Because this class polls the interface on a regular basis, it is strongly recommended that users avoid locating elements by XPath.
    • Field Detail

      • timeOutInSeconds

        protected final int timeOutInSeconds
    • Constructor Detail

      • AjaxElementLocator

        public AjaxElementLocator​(SearchContext context,
                                  int timeOutInSeconds,
                                  AbstractAnnotations annotations)
        Use this constructor in order to process custom annotations.
        Parameters:
        context - The context to use when finding the element
        timeOutInSeconds - How long to wait for the element to appear. Measured in seconds.
        annotations - AbstractAnnotations class implementation
      • AjaxElementLocator

        public AjaxElementLocator​(SearchContext searchContext,
                                  java.lang.reflect.Field field,
                                  int timeOutInSeconds)
        Main constructor.
        Parameters:
        searchContext - The context to use when finding the element
        field - The field representing this element
        timeOutInSeconds - How long to wait for the element to appear. Measured in seconds.
      • AjaxElementLocator

        public AjaxElementLocator​(java.time.Clock clock,
                                  SearchContext searchContext,
                                  java.lang.reflect.Field field,
                                  int timeOutInSeconds)
    • Method Detail

      • sleepFor

        protected long sleepFor()
        By default, we sleep for 250ms between polls. You may override this method in order to change how it sleeps.
        Returns:
        Duration to sleep in milliseconds
      • isElementUsable

        protected boolean isElementUsable​(WebElement element)
        By default, elements are considered "found" if they are in the DOM. Override this method in order to change whether or not you consider the element loaded. For example, perhaps you need the element to be displayed:
        
           return element.isDisplayed();
         
        Parameters:
        element - The element to use
        Returns:
        Whether or not it meets your criteria for "found"