Package org.openqa.selenium.support
Class PageFactory
java.lang.Object
org.openqa.selenium.support.PageFactory
Factory class to make using Page Objects simpler and easier.
- See Also:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic <T> T
initElements
(SearchContext searchContext, Class<T> pageClassToProxy) Instantiate an instance of the given class, and set a lazy proxy for each of the WebElement and List<WebElement> fields that have been declared, assuming that the field name is also the HTML element's "id" or "name".static void
initElements
(SearchContext searchContext, Object page) AsinitElements(SearchContext, Class)
but will only replace the fields of an already instantiated Page Object.static void
initElements
(ElementLocatorFactory factory, Object page) Similar to the other "initElements" methods, but takes anElementLocatorFactory
which is used for providing the mechanism for finding elements.static void
initElements
(FieldDecorator decorator, Object page) Similar to the other "initElements" methods, but takes anFieldDecorator
which is used for decorating each of the fields.
-
Constructor Details
-
PageFactory
public PageFactory()
-
-
Method Details
-
initElements
Instantiate an instance of the given class, and set a lazy proxy for each of the WebElement and List<WebElement> fields that have been declared, assuming that the field name is also the HTML element's "id" or "name". This means that for the class:
there will be an element that can be located using the xpath expression "//*[@id='submit']" or "//*[@name='submit']"public class Page { private WebElement submit; }
By default, the element or the list is looked up each and every time a method is called upon it. To change this behaviour, simply annotate the field with the
CacheLookup
. To change how the element is located, use theFindBy
annotation.This method will attempt to instantiate the class given to it, preferably using a constructor which takes a WebDriver instance as its only argument or falling back on a no-arg constructor. An exception will be thrown if the class cannot be instantiated.
- Type Parameters:
T
- Class of the PageObject- Parameters:
searchContext
- The search context that will be used to look up the elementspageClassToProxy
- A class which will be initialised.- Returns:
- An instantiated instance of the class with WebElement and List<WebElement> fields proxied
- See Also:
-
initElements
AsinitElements(SearchContext, Class)
but will only replace the fields of an already instantiated Page Object.- Parameters:
searchContext
- The driver that will be used to look up the elementspage
- The object with WebElement and List<WebElement> fields that should be proxied.
-
initElements
Similar to the other "initElements" methods, but takes anElementLocatorFactory
which is used for providing the mechanism for finding elements. If the ElementLocatorFactory returns null then the field won't be decorated.- Parameters:
factory
- The factory to usepage
- The object to decorate the fields of
-
initElements
Similar to the other "initElements" methods, but takes anFieldDecorator
which is used for decorating each of the fields.- Parameters:
decorator
- the decorator to usepage
- The object to decorate the fields of
-