diff --git a/htmlelements-junit-example/src/main/java/my/company/web/pages/SearchPage.java b/htmlelements-junit-example/src/main/java/my/company/web/pages/SearchPage.java
index 04f1720..6360f6e 100644
--- a/htmlelements-junit-example/src/main/java/my/company/web/pages/SearchPage.java
+++ b/htmlelements-junit-example/src/main/java/my/company/web/pages/SearchPage.java
@@ -13,15 +13,12 @@
*/
public class SearchPage {
- @SuppressWarnings("unused")
private WebDriver driver;
@FindBy(className = "b-serp-list")
- @SuppressWarnings("unused")
private SearchResults searchResults;
@FindBy(className = "b-morda-search-form")
- @SuppressWarnings("unused")
private SearchArrow searchArrow;
public SearchPage(WebDriver driver) {
@@ -29,8 +26,9 @@ public SearchPage(WebDriver driver) {
this.driver = driver;
}
- public void searchFor(String request) {
+ public SearchPage searchFor(String request) {
this.searchArrow.searchFor(request);
+ return this;
}
public SearchResults getSearchResults() {
diff --git a/htmlelements-junit-example/src/site/junit-example.md b/htmlelements-junit-example/src/site/junit-example.md
new file mode 100644
index 0000000..1483c6a
--- /dev/null
+++ b/htmlelements-junit-example/src/site/junit-example.md
@@ -0,0 +1,137 @@
+HtmlElements jUnit Samples
+==========================
+
+Подключение зависимостей
+------------------------
+
+Чтобы использовать библиотеку HtmlElements необходимо создать простой [maven-проект](http://maven.apache.org/guides/getting-started/index.html).
+После этого добавить в зависимости свежую версию библиотеки:
+
+```xml
+
+ ru.yandex.qatools.htmlelements
+ htmlelements-java
+ 1.10
+
+```
+
+Выполните команду `mvn clean compile`, чтобы проерить, что ваш проект компилируется.
+
+Пример использования HtmlElements
+---------------------------------
+
+В качестве примера возьмем главную страницу Яндекса (http://www.yandex.ru).
+Давайте опишем для начала простенький элемент, например поисковую строку:
+
+```java
+public class SearchArrow extends HtmlElement {
+
+ @FindBy(xpath = ".//input[@class='b-form-input__input']")
+ public TextInput requestInput;
+
+ @FindBy(xpath = ".//input[@class='b-form-button__input']")
+ public Button searchButton;
+
+ public void searchFor(String request) {
+ requestInput.clear();
+ requestInput.sendKeys(request);
+ searchButton.click();
+ }
+}
+```
+
+Этот класс описывает структуру поисковой строки и логику взаимодействия с ней.
+Дальше необходимо создать класс MainPage, который содержит поисковую строку:
+
+```java
+public class MainPage {
+
+ private WebDriver driver;
+
+ @FindBy(className = "b-morda-search-form")
+ private SearchArrow searchArrow;
+
+ public MainPage(final WebDriver driver) {
+ PageFactory.initElements(new HtmlElementDecorator(driver), this);
+ this.driver = driver;
+ }
+
+ public SearchPage searchFor(String request) {
+ this.searchArrow.searchFor(request);
+ return new SearchPage(driver);
+ }
+
+}
+```
+
+Как видно, в конструкторе вызывается инициализация внутренних эелементов стнаицы MainPage используется
+кастомный декоратор полей класса: HtmlElementDecorator.
+Так как поле 'searchArrow' является наследником HtmlElements, то его инициализация происходит рекурсивно.
+Таком образом, инициализируются и внутренние элементы поисковой строки:
+ - protected WebElement requestInput;
+ - protected WebElement searchButton;
+
+Как видно из описания, метод `searchFor` возвращает экземпляр поисковой страницы. Опишем ее:
+
+```java
+public class SearchPage {
+
+ private WebDriver driver;
+
+ @FindBy(className = "b-serp-list")
+ private SearchResults searchResults;
+
+ @FindBy(className = "b-morda-search-form")
+ private SearchArrow searchArrow;
+
+ public SearchPage(WebDriver driver) {
+ PageFactory.initElements(new HtmlElementDecorator(driver), this);
+ this.driver = driver;
+ }
+
+ public SearchPage searchFor(String request) {
+ this.searchArrow.searchFor(request);
+ return this;
+ }
+
+ public SearchResults getSearchResults() {
+ return this.searchResults;
+ }
+}
+```
+
+Для того, чтобы это проверить создадим простенький тест для проверки поисковых результатов,
+в котором создим экземляр нашей страницы:
+
+```java
+public class SearchingByRequestTest {
+
+ private final int DEFAULT_RESULTS_COUNT;
+
+ public WebDriver driver = new FirefoxDriver();
+
+ public SearchingByRequestTest() {
+ DEFAULT_RESULTS_COUNT = 10;
+ }
+
+ @Before
+ public void loadStartPage() {
+ driver.get("http://www.yandex.ru");
+ }
+
+ @Test
+ public void afterSearchingUserShouldSeSearchResults() {
+ MainPage mainPage = new MainPage(driver);
+ SearchPage page = mainPage.searchFor("Yandex");
+ assertThat(page.getSearchResults(), exists());
+ assertThat(page.getSearchResults().getSearchItems(), hasSize(DEFAULT_RESULTS_COUNT));
+ }
+
+ @After
+ public void killWebDriver() {
+ driver.quit();
+ }
+}
+```
+
+В этом примере видно, что после инициализации самой страницы `MainPage` произошла инициализация внутренних элементов.
\ No newline at end of file