Class AjaxElementLocator
java.lang.Object
org.openqa.selenium.support.pagefactory.DefaultElementLocator
org.openqa.selenium.support.pagefactory.AjaxElementLocator
- All Implemented Interfaces:
ElementLocator
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 Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionAjaxElementLocator
(Clock clock, SearchContext context, int timeOutInSeconds, AbstractAnnotations annotations) AjaxElementLocator
(Clock clock, SearchContext searchContext, Field field, int timeOutInSeconds) AjaxElementLocator
(SearchContext context, int timeOutInSeconds, AbstractAnnotations annotations) Use this constructor in order to process custom annotations.AjaxElementLocator
(SearchContext searchContext, Field field, int timeOutInSeconds) Main constructor. -
Method Summary
Modifier and TypeMethodDescriptionFind the element.Find the element list.protected boolean
isElementUsable
(WebElement element) By default, elements are considered "found" if they are in the DOM.protected long
sleepFor()
By default, we sleep for 250ms between polls.Methods inherited from class org.openqa.selenium.support.pagefactory.DefaultElementLocator
shouldCache, toString
-
Field Details
-
timeOutInSeconds
protected final int timeOutInSeconds
-
-
Constructor Details
-
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 elementtimeOutInSeconds
- How long to wait for the element to appear. Measured in seconds.annotations
- AbstractAnnotations class implementation
-
AjaxElementLocator
public AjaxElementLocator(Clock clock, SearchContext context, int timeOutInSeconds, AbstractAnnotations annotations) -
AjaxElementLocator
Main constructor.- Parameters:
searchContext
- The context to use when finding the elementfield
- The field representing this elementtimeOutInSeconds
- How long to wait for the element to appear. Measured in seconds.
-
AjaxElementLocator
public AjaxElementLocator(Clock clock, SearchContext searchContext, Field field, int timeOutInSeconds)
-
-
Method Details
-
findElement
Find the element.Will poll the interface on a regular basis until the element is present.
- Specified by:
findElement
in interfaceElementLocator
- Overrides:
findElement
in classDefaultElementLocator
-
findElements
Find the element list.Will poll the interface on a regular basis until at least one element is present.
- Specified by:
findElements
in interfaceElementLocator
- Overrides:
findElements
in classDefaultElementLocator
-
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
By default, elements are considered "found" if they are in the DOM. Override this method in order to change whether 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 it meets your criteria for "found"
-