52. Отсутствие типизации
public class PageWithSelect {
@FindBy(xpath = "select-xpath")
private WebElement select;
public PageWithSelect(WebDriver driver) {
PageFactory.initElements(driver, this);
}
private Select getSelect() {
return new Select(select);
}
// Other methods using getSelect() method
}
18
53. Отсутствие типизации
public class PageWithSelect {
@FindBy(xpath = "select-xpath")
private WebElement select;
public PageWithSelect(WebDriver driver) {
PageFactory.initElements(driver, this);
}
private Select getSelect() {
return new Select(select);
}
// Other methods using getSelect() method
}
18
54. Отсутствие типизации
public class PageWithSelect {
@FindBy(xpath = "select-xpath")
private WebElement select;
public PageWithSelect(WebDriver driver) {
PageFactory.initElements(driver, this);
}
private Select getSelect() {
return new Select(select);
}
// Other methods using getSelect() method
}
18
55. Отсутствие типизации
public class PageWithSelect {
@FindBy(xpath = "select-xpath")
private Select select;
public PageWithSelect(WebDriver driver) {
PageFactory.initElements(driver, this);
}
// Other methods using select
}
18
56. Отсутствие типизации
public class PageWithSelect {
@FindBy(xpath = "select-xpath")
private Select select;
public PageWithSelect(WebDriver driver) {
PageFactory.initElements(driver, this);
}
// Other methods using select
}
18
110. Матчеры в тестах
@Test
public void shouldSeeSearchResultsWhenLookingUp() {
searchPage.searchFor("SQA Days");
assertThat(searchResultsPage.getSearchResultsBlock(),
exists());
}
41
111. Матчеры в тестах
@Test
public void shouldSeeSearchResultsWhenLookingUp() {
searchPage.searchFor("SQA Days");
assertThat(searchResultsPage.getSearchResultsBlock(),
both(exists()).and(isDisplayed()));
}
42
112. Матчеры в тестах
@Test
public void shouldSeeSearchResultsWhenLookingUp() {
searchPage.searchFor("SQA Days");
String message = String.format(
"Элемент '%s' должен присутсвовать на странице",
searchResultsPage.getSearchResultsBlock()
);
assertThat(message,
searchResultsPage.getSearchResultsBlock(),
exists());
}
43
113. Матчеры в тестах
@Test
public void shouldSeeSearchResultsWhenLookingUp() {
searchPage.searchFor("SQA Days");
String message = String.format(
"Элемент '%s' должен присутсвовать на странице",
searchResultsPage.getSearchResultsBlock()
);
assertThat(message,
searchResultsPage.getSearchResultsBlock(),
exists());
}
Assert: Элемент ‘[FirefoxDriver: firefox on MAC
(e63b162c-853a-a243-999e-2266c9d52499)]’ должен
присутсвовать на странице
43
115. Именование элементов
@Name("Форма поиска")
@Block(@FindBy(className = "b-head-search")) Имя по
public class SearchArrow extends HtmlElement { аннотации
@Name("Поисковая строка")
@FindBy(id = "text")
private TextInput requestInput;
@Name("Кнопка 'Haйти'")
@FindBy(className = "b-form-button__input")
private Button searchButton;
@FindBy(className = "i-popup__content")
private Suggest suggest;
// ...
44
116. Именование элементов
@Name("Форма поиска")
@Block(@FindBy(className = "b-head-search")) Имя по
public class SearchArrow extends HtmlElement { аннотации
@Name("Поисковая строка")
@FindBy(id = "text")
private TextInput requestInput;
@Name("Кнопка 'Haйти'")
@FindBy(className = "b-form-button__input")
private Button searchButton;
@FindBy(className = "i-popup__content") Имя по
private Suggest suggest; названию поля
// ...
44
117. Именование элементов
public class SearchResultsPage {
@FindBy(className = "b-search")
private SearchArrow searchArrow;
@Name("Блок результатов поиска")
private SearchResultsBlock searchResultsBlock;
public SearchResultsPage(WebDriver driver) {
HtmlElementLoader.populatePageObject(this, driver);
}
public void searchFor(String request) {
searchArrow.searchFor(request);
}
public SearchResultsBlock getSearchResultsBlock() {
return searchResultsBlock;
}
}
45
118. Именование элементов
public class SearchResultsPage {
@FindBy(className = "b-search")
private SearchArrow searchArrow;
Переопределение
имени
@Name("Блок результатов поиска")
private SearchResultsBlock searchResultsBlock;
public SearchResultsPage(WebDriver driver) {
HtmlElementLoader.populatePageObject(this, driver);
}
public void searchFor(String request) {
searchArrow.searchFor(request);
}
public SearchResultsBlock getSearchResultsBlock() {
return searchResultsBlock;
}
}
45
119. Имена в тестах
@Test
public void shouldSeeSearchResultsWhenLookingUp() {
searchPage.searchFor("SQA Days");
String message = String.format(
"Элемент '%s' должен присутсвовать на странице",
searchResultsPage.getSearchResultsBlock()
);
assertThat(message,
searchResultsPage.getSearchResultsBlock(),
exists());
}
Assert: Элемент “Блок результатов поиска”
должен присутствовать на странице
46
131. Понятные логи
1.Ввожу в элемент “Поисковая строка”
текст “SQA Days”...
2.Кликаю на элемент “Кнопка ‘Найти’”...
54
132. Понятные логи
1.Ввожу в элемент “Поисковая строка”
текст “SQA Days”...
2.Кликаю на элемент “Кнопка ‘Найти’”...
3.Проверяю наличие элемента “Блок
результатов поиска”...
54
133. Понятные логи
1.Ввожу в элемент “Поисковая строка”
текст “SQA Days”...
2.Кликаю на элемент “Кнопка ‘Найти’”...
3.Проверяю наличие элемента “Блок
результатов поиска”...
Assert: Элемент “Блок результатов поиска”
должен присутствовать на странице
54