Class AbstractLocatorHandler<T>

  • Type Parameters:
    T - type of underlying object.
    All Implemented Interfaces:
    java.lang.reflect.InvocationHandler, LocatorHandler<T>
    Direct Known Subclasses:
    ComponentHandler, ListHandler

    public abstract class AbstractLocatorHandler<T>
    extends java.lang.Object
    implements java.lang.reflect.InvocationHandler, LocatorHandler<T>
    Abstract proxy handler supporting lazy loading and hooks on WebElement.
    • Constructor Summary

      Constructors 
      Constructor Description
      AbstractLocatorHandler​(org.openqa.selenium.support.pagefactory.ElementLocator locator)
      Creates a new locator handler.
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      boolean addListener​(ProxyElementListener listener)
      Add a listener for this locator handler.
      boolean equals​(java.lang.Object obj)  
      protected void fireProxyElementFound​(T result)
      Fire proxy element found event.
      protected void fireProxyElementSearch()
      Fire proxy element search event.
      protected abstract org.openqa.selenium.WebElement getElement()
      Get the underlying element.
      org.openqa.selenium.support.pagefactory.ElementLocator getHookLocator()
      Retrieve the element locator used by this proxy, with hooks applied.
      protected java.lang.String getLazyToString()
      Get string representation of not already found element.
      org.openqa.selenium.support.pagefactory.ElementLocator getLocator()
      Retrieve the element locator used by this proxy, without any hook applied.
      T getLocatorResult()
      Get the actual result of the locator, if result is not defined and not stale.
      abstract T getLocatorResultImpl()
      Get the actual result of the locator.
      protected static java.lang.reflect.Method getMethod​(java.lang.Class<?> declaringClass, java.lang.String name, java.lang.Class... types)
      Get declared method.
      int hashCode()  
      java.lang.Object invoke​(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args)  
      protected abstract boolean isStale()
      Get the stale status of the element.
      boolean loaded()
      Check if this handler has loaded it's result.
      org.openqa.selenium.NoSuchElementException noSuchElement()
      Builds a NoSuchElementException with a message matching this locator handler.
      void now()
      If result is not loaded, load result immediately.
      boolean present()
      Check if the result is present.
      java.lang.String proxyToString​(java.lang.String elementToString)
      Get string representation of the proxy
      boolean removeListener​(ProxyElementListener listener)
      Removes a proxy element listener.
      void reset()
      Reset the loaded data.
      protected abstract java.util.List<org.openqa.selenium.WebElement> resultToList​(T result)
      Convert result to a list of selenium element.
      void setHooks​(HookChainBuilder hookChainBuilder, java.util.List<HookDefinition<?>> hookDefinitions)
      Apply this hook list.
      void setProxy​(T proxy)
      Set the proxy using this handler.
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • Field Detail

      • hookDefinitions

        protected java.util.List<HookDefinition<?>> hookDefinitions
      • proxy

        protected T proxy
      • locator

        protected final org.openqa.selenium.support.pagefactory.ElementLocator locator
      • result

        protected T result
      • hooks

        protected java.util.List<FluentHook> hooks
    • Constructor Detail

      • AbstractLocatorHandler

        public AbstractLocatorHandler​(org.openqa.selenium.support.pagefactory.ElementLocator locator)
        Creates a new locator handler.
        Parameters:
        locator - selenium element locator
    • Method Detail

      • getMethod

        protected static java.lang.reflect.Method getMethod​(java.lang.Class<?> declaringClass,
                                                            java.lang.String name,
                                                            java.lang.Class... types)
        Get declared method.
        Parameters:
        declaringClass - declaring class
        name - method name
        types - argument types
        Returns:
        method
      • addListener

        public boolean addListener​(ProxyElementListener listener)
        Description copied from interface: LocatorHandler
        Add a listener for this locator handler.
        Specified by:
        addListener in interface LocatorHandler<T>
        Parameters:
        listener - listener to add, which will be notified when result is searched and found
        Returns:
        true if the listener was added, false otherwise
      • removeListener

        public boolean removeListener​(ProxyElementListener listener)
        Description copied from interface: LocatorHandler
        Removes a proxy element listener.
        Specified by:
        removeListener in interface LocatorHandler<T>
        Parameters:
        listener - listener to remove
        Returns:
        true if the listener was removed, false otherwise
      • fireProxyElementSearch

        protected void fireProxyElementSearch()
        Fire proxy element search event.
      • fireProxyElementFound

        protected void fireProxyElementFound​(T result)
        Fire proxy element found event.
        Parameters:
        result - found element
      • resultToList

        protected abstract java.util.List<org.openqa.selenium.WebElement> resultToList​(T result)
        Convert result to a list of selenium element.
        Parameters:
        result - found result
        Returns:
        list of selenium element
      • setProxy

        public void setProxy​(T proxy)
        Set the proxy using this handler.
        Parameters:
        proxy - proxy using this handler
      • getLocatorResultImpl

        public abstract T getLocatorResultImpl()
        Get the actual result of the locator.
        Returns:
        result of the locator
      • getLocatorResult

        public T getLocatorResult()
        Get the actual result of the locator, if result is not defined and not stale.

        It also raise events.

        Specified by:
        getLocatorResult in interface LocatorHandler<T>
        Returns:
        result of the locator
      • isStale

        protected abstract boolean isStale()
        Get the stale status of the element.
        Returns:
        true if element is stale, false otherwise
      • getElement

        protected abstract org.openqa.selenium.WebElement getElement()
        Get the underlying element.
        Returns:
        underlying element
      • noSuchElement

        public org.openqa.selenium.NoSuchElementException noSuchElement()
        Builds a NoSuchElementException with a message matching this locator handler.
        Specified by:
        noSuchElement in interface LocatorHandler<T>
        Returns:
        no such element exception
      • setHooks

        public void setHooks​(HookChainBuilder hookChainBuilder,
                             java.util.List<HookDefinition<?>> hookDefinitions)
        Description copied from interface: LocatorHandler
        Apply this hook list.
        Specified by:
        setHooks in interface LocatorHandler<T>
        Parameters:
        hookChainBuilder - hook chain builder
        hookDefinitions - hook definitions
      • getLocator

        public org.openqa.selenium.support.pagefactory.ElementLocator getLocator()
        Description copied from interface: LocatorHandler
        Retrieve the element locator used by this proxy, without any hook applied.
        Specified by:
        getLocator in interface LocatorHandler<T>
        Returns:
        element locator
      • getHookLocator

        public org.openqa.selenium.support.pagefactory.ElementLocator getHookLocator()
        Description copied from interface: LocatorHandler
        Retrieve the element locator used by this proxy, with hooks applied.
        Specified by:
        getHookLocator in interface LocatorHandler<T>
        Returns:
        element locator wrapped with hooks
      • loaded

        public boolean loaded()
        Description copied from interface: LocatorHandler
        Check if this handler has loaded it's result.
        Specified by:
        loaded in interface LocatorHandler<T>
        Returns:
        true if the result is loaded, false otherwise
      • present

        public boolean present()
        Description copied from interface: LocatorHandler
        Check if the result is present.
        Specified by:
        present in interface LocatorHandler<T>
        Returns:
        true if result is present, false otherwise
      • now

        public void now()
        Description copied from interface: LocatorHandler
        If result is not loaded, load result immediately. If it's already loaded, it has no effect.
        Specified by:
        now in interface LocatorHandler<T>
      • invoke

        public java.lang.Object invoke​(java.lang.Object proxy,
                                       java.lang.reflect.Method method,
                                       java.lang.Object[] args)
                                throws java.lang.Throwable
        Specified by:
        invoke in interface java.lang.reflect.InvocationHandler
        Throws:
        java.lang.Throwable
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • getLazyToString

        protected java.lang.String getLazyToString()
        Get string representation of not already found element.
        Returns:
        string representation of not already found element
      • proxyToString

        public java.lang.String proxyToString​(java.lang.String elementToString)
        Get string representation of the proxy
        Parameters:
        elementToString - string representation of the underlying element
        Returns:
        string representation of the proxy
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object