Skip to content

Repository files navigation

Html Elements framework

[release] (https://github.com/yandex-qatools/htmlelements/releases/latest) [Maven Central] (https://maven-badges.herokuapp.com/maven-central/ru.yandex.qatools.htmlelements/htmlelements-java)

This framework is designed to provide an easy-to-use way of interacting with web-page elements in your tests. It can be considered to be an extension of WebDriver Page Object.

With the help of the Html Elements framework you can group web-page elements into blocks, encapsulate logic of interaction within them and then easily use created blocks in page objects. It also provides a set of helpful matchers to use with web-page elements and blocks. See [JavaDocs] (https://oss.sonatype.org/service/local/repositories/releases/archive/ru/yandex/qatools/htmlelements/htmlelements-java/1.16/htmlelements-java-1.16-javadoc.jar/!/index.html) and Samples for more details.

You can ask your questions on StackOverflow with the [![htmlelements] (https://img.shields.io/badge/stackoverflow-htmlelements-orange.svg?style=flat)] (http://stackoverflow.com/questions/tagged/htmlelements) tag.

Other Languages

In case you are not a Java guy/gal, don't panic, there are still few options:

Release Notes

Include Html Elements in your project

Maven dependencies for Html Elements core:

<dependency>
<groupId>ru.yandex.qatools.htmlelements</groupId>
<artifactId>htmlelements-java</artifactId>
<version>1.17</version>
</dependency>

And for Thucydides integration:

<dependency>
<groupId>ru.yandex.qatools.htmlelements</groupId>
<artifactId>htmlelements-thucydides</artifactId>
<version>1.17</version>
</dependency>

Or you can include all modules at once if needed:

<dependency>
<groupId>ru.yandex.qatools.htmlelements</groupId>
<artifactId>htmlelements-all</artifactId>
<version>1.17</version>
</dependency>

Since 1.15 Java 8 is required. Please use 1.14 for Java 7 support.

Create blocks of elements

For example, let's create a block for the search form on the page http://www.yandex.com:

@Name("Search form")
@FindBy(xpath = "//form")
publicclassSearchArrowextendsHtmlElement {
@Name("Search request input")
@FindBy(id = "searchInput")
privateTextInputrequestInput;
@Name("Search button")
@FindBy(className = "b-form-button__input")
privateButtonsearchButton;
publicvoidsearch(Stringrequest) {
requestInput.sendKeys(request);
searchButton.click();
}
}

Construct page object using created blocks

You can easily use created blocks in page objects:

publicclassSearchPage {
privateSearchArrowsearchArrow;
// Other blocks and elements here ...publicSearchPage(WebDriverdriver) {
PageFactory.initElements(newHtmlElementDecorator(newHtmlElementLocatorFactory(driver)), this);
}
publicvoidsearch(Stringrequest) {
searchArrow.search(request);
}
// Other methods here ...
}

Use page objects in your tests

Created page objects can be used in your tests. This makes tests more concise, easier to maintain, and easy to write.

publicclassSampleTest {
privateWebDriverdriver = newFirefoxDriver();
privateSearchPagesearchPage = newSearchPage(driver);
@BeforepublicvoidloadPage() {
driver.get("http://www.yandex.com");
}
@TestpublicvoidsampleTest() {
searchPage.search("yandex");
// Some assertion here
}
@AfterpublicvoidcloseDriver() {
driver.quit();
}
}

Questions?

In case you can't find an answer in documentation and examples provided above, you can ask it on StackOverflow with the htmlelements tag.

About

Html Elements is a Java framework providing easy-to-use way of interaction with web-page elements in web-page tests.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages