Package com.vaadin.testbench
Class TestBenchElement
- java.lang.Object
-
- com.vaadin.testbench.TestBenchElement
-
- All Implemented Interfaces:
CanCompareScreenshots,HasCallFunction,HasDriver,HasElementQuery,HasPropertySettersGetters,HasSearchContext,HasTestBenchCommandExecutor,org.openqa.selenium.SearchContext,org.openqa.selenium.TakesScreenshot,org.openqa.selenium.WebElement,org.openqa.selenium.WrapsElement
public class TestBenchElement extends Object implements org.openqa.selenium.WrapsElement, org.openqa.selenium.WebElement, HasDriver, CanCompareScreenshots, HasTestBenchCommandExecutor, HasElementQuery, HasPropertySettersGetters, HasCallFunction
TestBenchElement is a WebElement wrapper. It provides Vaadin specific helper functionality. TestBenchElements are created when you search for elements from TestBenchTestCase or a context relative search from TestBenchElement.
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedTestBenchElement()protectedTestBenchElement(org.openqa.selenium.WebElement webElement, TestBenchCommandExecutor commandExecutor)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description ObjectcallFunction(String methodName, Object... args)Invoke the given method on this element using the given arguments as arguments to the method.voidclear()voidclick()voidclick(int x, int y, org.openqa.selenium.Keys... modifiers)booleancompareScreen(BufferedImage reference, String referenceName)Tests that a screen shot is equal to the specified reference image.booleancompareScreen(File reference)Tests that a screen shot is equal to the specified reference image.booleancompareScreen(String referenceId)Tests that a screen shot is equal to the specified reference image.voidcontextClick()voiddispatchEvent(String eventType)Dispatches (fires) a custom event of the given type on the element.voiddispatchEvent(String eventType, Map<String,Object> customEventInit)Dispatches (fires) a custom event of the given type on the element with the given propertiesvoiddoubleClick()booleanequals(Object obj)protected ObjectexecuteScript(String script, Object... args)Executes the given JavaScript in the context of the currently selected frame or window.TestBenchElementfindElement(org.openqa.selenium.By by)List<org.openqa.selenium.WebElement>findElements(org.openqa.selenium.By by)voidfocus()Move browser focus to this ElementStringgetAttribute(String name)protected org.openqa.selenium.CapabilitiesgetCapabilities()Returns information about current browser usedSet<String>getClassNames()Gets all the class names set for this element.TestBenchCommandExecutorgetCommandExecutor()Return a reference to the relatedTestBenchCommandExecutorinstance.org.openqa.selenium.SearchContextgetContext()Returns this TestBenchElement cast to a SearchContext.StringgetCssValue(String propertyName)org.openqa.selenium.WebDrivergetDriver()Return theWebDriverinstance associated with the implementing class instance.org.openqa.selenium.PointgetLocation()ObjectgetProperty(String... propertyNames)Gets a JavaScript property of the given element.BooleangetPropertyBoolean(String... propertyNames)Gets a JavaScript property of the given element as a boolean.DoublegetPropertyDouble(String... propertyNames)Gets a JavaScript property of the given element as a double.TestBenchElementgetPropertyElement(String... propertyNames)Gets a JavaScript property of the given element as a DOM element.List<TestBenchElement>getPropertyElements(String... propertyNames)Gets a JavaScript property of the given element as a list of DOM elements.IntegergetPropertyInteger(String... propertyNames)Gets a JavaScript property of the given element as an integer.StringgetPropertyString(String... propertyNames)Gets a JavaScript property of the given element as a string.org.openqa.selenium.RectanglegetRect()<X> XgetScreenshotAs(org.openqa.selenium.OutputType<X> target)org.openqa.selenium.DimensiongetSize()StringgetTagName()StringgetText()org.openqa.selenium.WebElementgetWrappedElement()booleanhasAttribute(String attribute)Checks if the given attribute is present on the element.booleanhasClassName(String className)Checks if this element has the given class name.inthashCode()protected voidinit()This is run after initializing a TestBenchElement.protected voidinit(org.openqa.selenium.WebElement element, TestBenchCommandExecutor commandExecutor)TestBenchElement initialization function.protected booleanisChrome()Checks if the current test is running on Chrome.booleanisDisplayed()booleanisEnabled()Returns whether the Vaadin component, that this element represents, is enabled or not.protected booleanisFirefox()Checks if the current test is running on Firefox.booleanisSelected()voidscroll(int scrollTop)Sets the number of pixels that an element's content is scrolled from the top.voidscrollIntoView()Scrolls the element into the visible area of the browser windowvoidscrollLeft(int scrollLeft)Sets the number of pixels that an element's content is scrolled to the left.voidsendKeys(CharSequence... keysToSend)voidsetProperty(String name, Boolean value)Sets a JavaScript property of the given element.voidsetProperty(String name, Double value)Sets a JavaScript property of the given element.voidsetProperty(String name, Integer value)Sets a JavaScript property of the given element.voidsetProperty(String name, String value)Sets a JavaScript property of the given element.voidsubmit()protected voidwaitForVaadin()protected <T> TwaitUntil(org.openqa.selenium.support.ui.ExpectedCondition<T> condition)Waits up to 10 seconds for the given condition to become neither null nor false.protected <T> TwaitUntil(org.openqa.selenium.support.ui.ExpectedCondition<T> condition, long timeoutInSeconds)Waits the given number of seconds for the given condition to become neither null nor false.<T extends TestBenchElement>
Twrap(Class<T> elementType)protected static TestBenchElementwrapElement(org.openqa.selenium.WebElement element, TestBenchCommandExecutor commandExecutor)protected static List<TestBenchElement>wrapElements(List<org.openqa.selenium.WebElement> elements, TestBenchCommandExecutor commandExecutor)-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.vaadin.testbench.HasElementQuery
$, $
-
-
-
-
Constructor Detail
-
TestBenchElement
protected TestBenchElement()
-
TestBenchElement
protected TestBenchElement(org.openqa.selenium.WebElement webElement, TestBenchCommandExecutor commandExecutor)
-
-
Method Detail
-
init
protected void init(org.openqa.selenium.WebElement element, TestBenchCommandExecutor commandExecutor)TestBenchElement initialization function. If a subclass of TestBenchElement needs to run some initialization code, it should overrideinit(), not this function.- Parameters:
element- WebElement to wrapcommandExecutor- TestBenchCommandExecutor instance
-
isChrome
protected boolean isChrome()
Checks if the current test is running on Chrome.- Returns:
trueif the test is running on Chrome,falseotherwise
-
isFirefox
protected boolean isFirefox()
Checks if the current test is running on Firefox.- Returns:
trueif the test is running on Firefox,falseotherwise
-
getCapabilities
protected org.openqa.selenium.Capabilities getCapabilities()
Returns information about current browser used- Returns:
- information about current browser used
- See Also:
Capabilities
-
init
protected void init()
This is run after initializing a TestBenchElement. This can be overridden in subclasses of TestBenchElement to run some initialization code.
-
getWrappedElement
public org.openqa.selenium.WebElement getWrappedElement()
- Specified by:
getWrappedElementin interfaceorg.openqa.selenium.WrapsElement
-
waitForVaadin
protected void waitForVaadin()
-
scroll
public void scroll(int scrollTop)
Sets the number of pixels that an element's content is scrolled from the top.- Parameters:
scrollTop- value set to Element.scroll property
-
scrollLeft
public void scrollLeft(int scrollLeft)
Sets the number of pixels that an element's content is scrolled to the left.- Parameters:
scrollLeft- value set to Element.scrollLeft property
-
click
public void click()
- Specified by:
clickin interfaceorg.openqa.selenium.WebElement
-
submit
public void submit()
- Specified by:
submitin interfaceorg.openqa.selenium.WebElement
-
sendKeys
public void sendKeys(CharSequence... keysToSend)
- Specified by:
sendKeysin interfaceorg.openqa.selenium.WebElement
-
clear
public void clear()
- Specified by:
clearin interfaceorg.openqa.selenium.WebElement
-
getTagName
public String getTagName()
- Specified by:
getTagNamein interfaceorg.openqa.selenium.WebElement
-
getAttribute
public String getAttribute(String name)
- Specified by:
getAttributein interfaceorg.openqa.selenium.WebElement
-
hasAttribute
public boolean hasAttribute(String attribute)
Checks if the given attribute is present on the element.- Parameters:
attribute- the name of the attribute- Returns:
trueif the attribute is present,falseotherwise
-
isSelected
public boolean isSelected()
- Specified by:
isSelectedin interfaceorg.openqa.selenium.WebElement
-
isEnabled
public boolean isEnabled()
Returns whether the Vaadin component, that this element represents, is enabled or not.- Specified by:
isEnabledin interfaceorg.openqa.selenium.WebElement- Returns:
- true if the component is enabled.
-
getText
public String getText()
- Specified by:
getTextin interfaceorg.openqa.selenium.WebElement
-
findElements
public List<org.openqa.selenium.WebElement> findElements(org.openqa.selenium.By by)
- Specified by:
findElementsin interfaceorg.openqa.selenium.SearchContext- Specified by:
findElementsin interfaceorg.openqa.selenium.WebElement
-
findElement
public TestBenchElement findElement(org.openqa.selenium.By by)
- Specified by:
findElementin interfaceorg.openqa.selenium.SearchContext- Specified by:
findElementin interfaceorg.openqa.selenium.WebElement
-
isDisplayed
public boolean isDisplayed()
- Specified by:
isDisplayedin interfaceorg.openqa.selenium.WebElement
-
getLocation
public org.openqa.selenium.Point getLocation()
- Specified by:
getLocationin interfaceorg.openqa.selenium.WebElement
-
getSize
public org.openqa.selenium.Dimension getSize()
- Specified by:
getSizein interfaceorg.openqa.selenium.WebElement
-
getCssValue
public String getCssValue(String propertyName)
- Specified by:
getCssValuein interfaceorg.openqa.selenium.WebElement
-
click
public void click(int x, int y, org.openqa.selenium.Keys... modifiers)
-
doubleClick
public void doubleClick()
-
contextClick
public void contextClick()
-
wrap
public <T extends TestBenchElement> T wrap(Class<T> elementType)
-
getCommandExecutor
public TestBenchCommandExecutor getCommandExecutor()
Description copied from interface:HasTestBenchCommandExecutorReturn a reference to the relatedTestBenchCommandExecutorinstance.- Specified by:
getCommandExecutorin interfaceHasTestBenchCommandExecutor- Returns:
- the
TestBenchCommandExecutorinstance
-
getDriver
public org.openqa.selenium.WebDriver getDriver()
Description copied from interface:HasDriverReturn theWebDriverinstance associated with the implementing class instance. This can be simply the class itself re-cast as a WebDriver, or a reference to some WebDriver obtainable by any other means.
-
getContext
public org.openqa.selenium.SearchContext getContext()
Returns this TestBenchElement cast to a SearchContext. Method provided for compatibility and consistency.- Specified by:
getContextin interfaceHasSearchContext- Returns:
- a
SearchContextinstance
-
focus
public void focus()
Move browser focus to this Element
-
wrapElements
protected static List<TestBenchElement> wrapElements(List<org.openqa.selenium.WebElement> elements, TestBenchCommandExecutor commandExecutor)
-
wrapElement
protected static TestBenchElement wrapElement(org.openqa.selenium.WebElement element, TestBenchCommandExecutor commandExecutor)
-
getScreenshotAs
public <X> X getScreenshotAs(org.openqa.selenium.OutputType<X> target) throws org.openqa.selenium.WebDriverException- Specified by:
getScreenshotAsin interfaceorg.openqa.selenium.TakesScreenshot- Throws:
org.openqa.selenium.WebDriverException
-
getRect
public org.openqa.selenium.Rectangle getRect()
- Specified by:
getRectin interfaceorg.openqa.selenium.WebElement
-
getClassNames
public Set<String> getClassNames()
Gets all the class names set for this element.- Returns:
- a set of class names
-
hasClassName
public boolean hasClassName(String className)
Checks if this element has the given class name.Matches only full class names, i.e. has ("foo") does not match class="foobar bafoo"
- Parameters:
className- the class name to check for- Returns:
trueif the element has the given class name,falseotherwise
-
compareScreen
public boolean compareScreen(String referenceId) throws IOException
Description copied from interface:CanCompareScreenshotsTests that a screen shot is equal to the specified reference image. The comparison tolerance can be specified by setting the com.vaadin.testbench.block.error system property to a value between 0 and 1, where 0 == no changes are accepted and 1 == big changes are accepted. Note that specifying 1 doesn't mean that any reference image is accepted.- Specified by:
compareScreenin interfaceCanCompareScreenshots- Parameters:
referenceId- the ID of the reference image- Returns:
- true if the screenshot is considered equal to the reference image, false otherwise.
- Throws:
IOException- if there was a problem accessing the reference image
-
compareScreen
public boolean compareScreen(File reference) throws IOException
Description copied from interface:CanCompareScreenshotsTests that a screen shot is equal to the specified reference image. The comparison tolerance can be specified by setting the com.vaadin.testbench.block.error system property to a value between 0 and 1, where 0 == no changes are accepted and 1 == all changes are accepted.- Specified by:
compareScreenin interfaceCanCompareScreenshots- Parameters:
reference- the reference image file- Returns:
- true if the screenshot is considered equal to the reference image, false otherwise.
- Throws:
IOException- if there was a problem accessing the reference image
-
compareScreen
public boolean compareScreen(BufferedImage reference, String referenceName) throws IOException
Description copied from interface:CanCompareScreenshotsTests that a screen shot is equal to the specified reference image. The comparison tolerance can be specified by setting the com.vaadin.testbench.block.error system property to a value between 0 and 1, where 0 == no changes are accepted and 1 == all changes are accepted.- Specified by:
compareScreenin interfaceCanCompareScreenshots- Parameters:
reference- the reference imagereferenceName- the filename of the reference image. Used when writing the error files.- Returns:
- true if the screenshot is considered equal to the reference image, false otherwise.
- Throws:
IOException- if there was a problem accessing the reference image
-
scrollIntoView
public void scrollIntoView()
Scrolls the element into the visible area of the browser window
-
waitUntil
protected <T> T waitUntil(org.openqa.selenium.support.ui.ExpectedCondition<T> condition, long timeoutInSeconds)Waits the given number of seconds for the given condition to become neither null nor false.NotFoundExceptions are ignored by default.Use e.g. as
waitUntil(ExpectedConditions.presenceOfElementLocated(by), 10);- Type Parameters:
T- The return type of theExpectedConditionand this method- Parameters:
condition- Models a condition that might reasonably be expected to eventually evaluate to something that is neither null nor false.timeoutInSeconds- The timeout in seconds for the wait.- Returns:
- The condition's return value if it returned something different from null or false before the timeout expired.
- Throws:
org.openqa.selenium.TimeoutException- If the timeout expires.- See Also:
FluentWait.until(java.util.function.Function<? super T, V>),ExpectedCondition
-
waitUntil
protected <T> T waitUntil(org.openqa.selenium.support.ui.ExpectedCondition<T> condition)
Waits up to 10 seconds for the given condition to become neither null nor false.NotFoundExceptions are ignored by default.Use e.g. as
waitUntil(ExpectedConditions.presenceOfElementLocated(by));- Type Parameters:
T- The return type of theExpectedConditionand this method- Parameters:
condition- Models a condition that might reasonably be expected to eventually evaluate to something that is neither null nor false.- Returns:
- The condition's return value if it returned something different from null or false before the timeout expired.
- Throws:
org.openqa.selenium.TimeoutException- If 10 seconds passed.- See Also:
FluentWait.until(java.util.function.Function<? super T, V>),ExpectedCondition
-
setProperty
public void setProperty(String name, String value)
Description copied from interface:HasPropertySettersGettersSets a JavaScript property of the given element.- Specified by:
setPropertyin interfaceHasPropertySettersGetters- Parameters:
name- the name of the propertyvalue- the value to set
-
setProperty
public void setProperty(String name, Boolean value)
Description copied from interface:HasPropertySettersGettersSets a JavaScript property of the given element.- Specified by:
setPropertyin interfaceHasPropertySettersGetters- Parameters:
name- the name of the propertyvalue- the value to set
-
setProperty
public void setProperty(String name, Double value)
Description copied from interface:HasPropertySettersGettersSets a JavaScript property of the given element.- Specified by:
setPropertyin interfaceHasPropertySettersGetters- Parameters:
name- the name of the propertyvalue- the value to set
-
setProperty
public void setProperty(String name, Integer value)
Description copied from interface:HasPropertySettersGettersSets a JavaScript property of the given element.- Specified by:
setPropertyin interfaceHasPropertySettersGetters- Parameters:
name- the name of the propertyvalue- the value to set
-
getPropertyString
public String getPropertyString(String... propertyNames)
Description copied from interface:HasPropertySettersGettersGets a JavaScript property of the given element as a string.- Specified by:
getPropertyStringin interfaceHasPropertySettersGetters- Parameters:
propertyNames- the name of on or more properties, forming a property chain of typeproperty1.property2.property3- Returns:
- the value of the property
-
getPropertyBoolean
public Boolean getPropertyBoolean(String... propertyNames)
Description copied from interface:HasPropertySettersGettersGets a JavaScript property of the given element as a boolean.- Specified by:
getPropertyBooleanin interfaceHasPropertySettersGetters- Parameters:
propertyNames- the name of on or more properties, forming a property chain of typeproperty1.property2.property3- Returns:
- the value of the property
-
getPropertyElement
public TestBenchElement getPropertyElement(String... propertyNames)
Description copied from interface:HasPropertySettersGettersGets a JavaScript property of the given element as a DOM element.- Specified by:
getPropertyElementin interfaceHasPropertySettersGetters- Parameters:
propertyNames- the name of on or more properties, forming a property chain of typeproperty1.property2.property3- Returns:
- the value of the property
-
getPropertyElements
public List<TestBenchElement> getPropertyElements(String... propertyNames)
Description copied from interface:HasPropertySettersGettersGets a JavaScript property of the given element as a list of DOM elements.- Specified by:
getPropertyElementsin interfaceHasPropertySettersGetters- Parameters:
propertyNames- the name of on or more properties, forming a property chain of typeproperty1.property2.property3- Returns:
- the value of the property
-
getPropertyDouble
public Double getPropertyDouble(String... propertyNames)
Description copied from interface:HasPropertySettersGettersGets a JavaScript property of the given element as a double.- Specified by:
getPropertyDoublein interfaceHasPropertySettersGetters- Parameters:
propertyNames- the name of on or more properties, forming a property chain of typeproperty1.property2.property3- Returns:
- the value of the property
-
getPropertyInteger
public Integer getPropertyInteger(String... propertyNames)
Description copied from interface:HasPropertySettersGettersGets a JavaScript property of the given element as an integer.- Specified by:
getPropertyIntegerin interfaceHasPropertySettersGetters- Parameters:
propertyNames- the name of on or more properties, forming a property chain of typeproperty1.property2.property3- Returns:
- the value of the property
-
getProperty
public Object getProperty(String... propertyNames)
Description copied from interface:HasPropertySettersGettersGets a JavaScript property of the given element.The return value needs to be cast manually to the correct type.
- Specified by:
getPropertyin interfaceHasPropertySettersGetters- Parameters:
propertyNames- the name of on or more properties, forming a property chain of typeproperty1.property2.property3- Returns:
- the value of the property
-
executeScript
protected Object executeScript(String script, Object... args)
Executes the given JavaScript in the context of the currently selected frame or window. The script fragment provided will be executed as the body of an anonymous function.This method wraps any returned
WebElementasTestBenchElement.- Parameters:
script- the script to executeargs- the arguments, available in the script asarguments[0]...arguments[N]- Returns:
- whatever
JavascriptExecutor.executeScript(String, Object...)returns - Throws:
UnsupportedOperationException- if the underlying driver does not support JavaScript execution- See Also:
JavascriptExecutor.executeScript(String, Object...)
-
callFunction
public Object callFunction(String methodName, Object... args)
Description copied from interface:HasCallFunctionInvoke the given method on this element using the given arguments as arguments to the method.- Specified by:
callFunctionin interfaceHasCallFunction- Parameters:
methodName- the method to invokeargs- the arguments to pass to the method- Returns:
- the value returned by the method
-
dispatchEvent
public void dispatchEvent(String eventType)
Dispatches (fires) a custom event of the given type on the element.The event is created without any parameters.
- Parameters:
eventType- the type of custom event to dispatch
-
dispatchEvent
public void dispatchEvent(String eventType, Map<String,Object> customEventInit)
Dispatches (fires) a custom event of the given type on the element with the given properties- Parameters:
eventType- the type of custom event to dispatchcustomEventInit- map with properties and values that will be used to initialize the event
-
-