Альтернативные Page Object подходы.

Page Object и Thucydides

Одним из альтернативных подходов является использование фреймворка Thucydides. Он переводится как Фукиди́д , это имя древнегреческого историка и полководца, который во время Пелопоннесской войны прославился именно качественными репортами, отсюда и название этого фреймворка.
Thucydides — это бесплатный проект с открытым исходным кодом, разрабатываемый с 2011 года. Проект постоянно обновляется по мере добавления новой функциональности в новых версиях Selenium.
Фреймворк реализует Page Object паттерн и позволяет уменьшить дублирование кода за счет использования еще одного типа классов между тестами и страницами, так называемых «степов».
Посмотрим, как выглядят класс "степов" и page object класс:
1
public class StepsinBook extends ScenarioSteps {
2
public StepsinBook(Pages pages) {
3
super(pages);
4
}
5
public BookPage getPageBook()
6
{
7
return getPages().currentPageAt(BookPage.class);
8
}
9
@Step
10
public void getMain(String url)
11
{
12
getPageBook().getMainPage(url);
13
}
14
@Step
15
public void AllBooks()
16
{
17
getPageBook().allBooks();
18
}
19
@Step
20
public void search(){
21
getPageBook().search("Книга");
22
}
23
@Step
24
public void catalog(){
25
getPageBook().catalog();
26
}
27
}
28
29
public class BookPage extends PageObject {
30
@FindBy(linkText = "Все книги")
31
WebElement allbooksButton;
32
33
@FindBy(linkText = "Поиск")
34
WebElement searchButton;
35
36
@FindBy(name = "query")
37
WebElement searchField;
38
39
@FindBy(css = "button")
40
WebElement searchBegin;
41
42
public BookPage(WebDriver driver) {
43
super(driver);
44
}
45
46
public void getMainPage(String url) {
47
getDriver().get(url);
48
49
}
50
51
public void allBooks() {
52
allbooksButton.click();
53
}
54
55
public void search(String searchWord) {
56
searchButton.click();
57
searchField.sendKeys(searchWord);
58
searchBegin.click();
59
60
}
61
62
}
Copied!
Thucydides позволяет запускать тесты во всех браузерах, поддерживаемых Selenium, и полностью берет на себя работу с драйвером, его настройку, запуск и остановку.

HTML Elements

Фреймворк HTML Elements — инструмент для простой работы с элементами веб-страниц в тестах.
HTML Elements позволяет собирать page-объекты как конструктор. Из типизированных элементов вы можете собирать нужные вам блоки, которые можно объединять, комбинировать друг с другом и собирать из них page-объекты. Это значительно повышает степень переиспользования кода, делает его более читаемым и наглядным, а написание тестов — более простым.
Основной репозиторий: https://github.com/yandex-qatools/htmlelements.
Также документирован код проекта.