Htmlelements
Html Elements is a Java framework providing easy-to-use way of interaction with web-page elements in web-page tests.
Install / Use
/learn @yandex-qatools/HtmlelementsREADME
Html Elements framework
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 and Samples for more details.
You can ask your questions on StackOverflow with the tag.
Other Languages
In case you are not a Java guy/gal, don't panic, there are still few options:
- Html Elements .NET implementation - .NET port made by Vadzim Hushchanskou
- Html Elements PHP implementation - PHP port made by Alexander Obuhovich
- bumblebee framework (C#) - same idea, nice implementation
Release Notes
- Version 1.20 Release Notes
- Version 1.19 Release Notes
- Version 1.18 Release Notes
- Version 1.17 Release Notes
- Version 1.16 Release Notes
- Version 1.15 Release Notes
- Version 1.14 Release Notes
- Version 1.13 Release Notes
- Version 1.12 Release Notes
- Version 1.11 Release Notes
- Version 1.10 Release Notes
- Version 1.9 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.21.0</version> <!-- 1.21+ is SELENIUM 4.1.0 compatible -->
</dependency>
And for Thucydides integration:
<dependency>
<groupId>ru.yandex.qatools.htmlelements</groupId>
<artifactId>htmlelements-thucydides</artifactId>
<version>1.21.0</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.21.0</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")
public class SearchArrow extends HtmlElement {
@Name("Search request input")
@FindBy(id = "searchInput")
private TextInput requestInput;
@Name("Search button")
@FindBy(className = "b-form-button__input")
private Button searchButton;
public void search(String request) {
requestInput.sendKeys(request);
searchButton.click();
}
}
Construct page object using created blocks
You can easily use created blocks in page objects:
public class SearchPage {
private SearchArrow searchArrow;
// Other blocks and elements here ...
public SearchPage(WebDriver driver) {
PageFactory.initElements(new HtmlElementDecorator(new HtmlElementLocatorFactory(driver)), this);
}
public void search(String request) {
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.
public class SampleTest {
private WebDriver driver = new FirefoxDriver();
private SearchPage searchPage = new SearchPage(driver);
@Before
public void loadPage() {
driver.get("http://www.yandex.com");
}
@Test
public void sampleTest() {
searchPage.search("yandex");
// Some assertion here
}
@After
public void closeDriver() {
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
tag.
Related Skills
node-connect
349.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
349.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
349.0kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
