Доброго времени суток. Вопрос первый: Подскажите пожалуйста где правильно писать проверку на нахождение на нужной странице и нужно ли вообще писать:
В методе класса:
public class mainPage {
private final WebDriver driver;
By mainPageLocator = By.id("topLoginLink");
public mainPage(WebDriver driver) {
this.driver = driver;
}
public loginPage verificationMainPage() {
driver.findElement(mainPageLocator).click();
return new loginPage(driver);
}}
В конструкторе класса:
public class mainPage {
private final WebDriver driver;
By mainPageLocator = By.id("topLoginLink");
public mainPage(WebDriver driver) {
this.driver = driver;
}
public mainPage(WebDriver driver) {
this.driver = driver;
if (!"mainPage".equals(driver.getTitle())) {
throw new IllegalStateException("This is not the mainPage");
}
}
Или писать проверку непосредственно в тесте:
@Test
public void createNewAd() {
// driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
mainPage mainPageOjb = new mainPage(driver);
mainPageOjb.submitLogin();
Assert.assertTrue(driver.findElement(By.id("typewaiting")).getText().contains("Главная страница"));
}
Вопрос второй: Какая должны быть структура теста:
@Test
public void createNewAd() {
//некий код полного тест кейса
}
или
@Test
public void mainPage() {
//некий заходим на главную страницу, проверяем что зашли
}
@Test(dependsOnMethods = "mainPage")
public void login() {
//некий код с вводом логина и пароля, проверка перехода
}
@Test(dependsOnMethods = "login")
public void myAccount() {
//некий код с вводом создание чего то и проверка создания
}
Вопрос третий: Как часто нужно вызывать проверки в тесте, только в конце сценария тест кейса или и на промежуточных этапах?
Добрый день!
Проверку не нужно делать. В предварительных настройках теста Вы должны свой WebDriver
отправить на начальную страницу теста, а потом уже ваши классы сами будут обеспечивать возврат необходимой страницы. Так что мне кажется, что это лишнее.
Также, кроме паттерна PageObject
можете взглянуть на паттерн PajeFactory
, который возвращает Вам проинициализированный PageObject
. Это тоже является своего рода проверкой того, на какой странице мы находимся.
Желательно (но необязательно) структура теста должна быть иерархической. Рекомендую для ответа себе на этот вопрос прочитать статью How To Structure Your Test Code.
Assert
всегда нужно вызывать в самом тесте и только в конце (После assert
метод возвращает управление (завершается)); Assert
для одного теста всегда будет один, иначе если у вас встречается их несколько в тесте, то ваш тест нужно разделить на несколько тестов.Assert
нежелательно переносить внутрь классов, которые не помечены аннотацией @Test
(в вышеназванной статье также можно найти, как и где применяется assert
). Любой Assert
не имеет смысла вне тестирующего метода. Но можно сделать так (это нежелательно. Я не проверял, сработает ли тест правильно но попробуйте):
@Test
public void createNewAd() {
mainPage mainPageOjb = new mainPage(driver);
mainPageOjb.submitLogin();
assertMethod();
}
public void assertMethod() {
Assert.assertTrue(driver.findElement(By.id("typewaiting")).getText().contains("Главная страница"));
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
При вызове removeViev() окно не закрывается на android 50 (возможно на других версиях тоже, не проверял)
Всем привет, подскажите пожалуйста нужно сделать вертикальный разделитель пунктирный без изображений с помощью border-left css, если есть содержимое...
ЗдравствуйтеУ меня на странице есть динамическое добавление полей input
Немного запуталсяПробую верстать по psd и иногда смотрю на пример(исходный код - как должно было бы быть)