Не могу разобрать как писать правильно проверки assert для полей


(f@zen>) #1

Добрый день коллеги! Я не так недавно начал разбираться во фреймверке Thucudides. На дынный момент я использую такую связку Selenium+Java+IntellijIdea+JUnit+Maven+Thucydides. Так вот я написал простейший тест по авторизации. Тест работает, однако без проверки, как мне поставить проверку если (поле логин пустое) и при прохождении тест он валится, а в отчете показано где именно.Я в принципе понимаю что надо использовать конструкцию getText() из PageObject. Вот мой тест

1.AuthPage

import net.thucydides.core.pages.PageObject;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;  
import org.openqa.selenium.support.FindBy;

public class Auth extends PageObject {
private static final Integer CATALOG_WAIT_FOR_TIMEOUT = 20000;

@FindBy(className = "ajaxPage")
private WebElement addEntry;

@FindBy(id  = "input-email")
private WebElement addLogin;

@FindBy(id = "input-password")
private WebElement addPass;

@FindBy(xpath  = "//*[@id='ajax2login']/input")
private WebElement addEnter;

@FindBy(className  = "authorization")
private WebElement addAuth;


 public Auth(WebDriver driver) {
    super(driver, CATALOG_WAIT_FOR_TIMEOUT);
}

public void setClickEntry() {
clickOn(addEntry);
}

public void setLoginIn() {enter("fazen7@mail.ru").into(addLogin);}

public void setPassIn() {enter("12345").into(addPass);}

public void setEnterIn() {clickOn(addEnter);}

public void setIn() {}

}

2.Steps

 package steps;

 import AuthPage.Auth;
 import net.thucydides.core.annotations.Step;
 import net.thucydides.core.pages.Pages;
 import net.thucydides.core.steps.ScenarioSteps;




public class AuthSteps extends ScenarioSteps {
Auth authPage;

public AuthSteps(Pages pages) {
    super(pages);
}

@Step ("Запустил браузер")
public void start_browser() {
    Auth loginPage = getPages().get(Auth.class);
    loginPage.open();
}
@Step ("Нажал кнопку Войти")
public void addEntry() {authPage.setClickEntry();
}
@Step ("Ввел логин")
public void addLogin() {authPage.setLoginIn();
}
@Step ("Ввел пароль")
public void addPass() {authPage.setPassIn();
}
@Step ("Кликнул Вход" )
public void addEnter() {authPage.setEnterIn();
}
@Step ("Добро пожаловать пользователь")
public void addAuth(){authPage.setIn();
}
@Step ()
public String getMsg(){
    return authPage.getText();
}

3.BeforeClass

package tests;


import net.thucydides.core.annotations.Managed;
import net.thucydides.core.annotations.Steps;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.openqa.selenium.WebDriver;
import steps.AuthSteps;
import java.io.IOException;
import static org.hamcrest.core.Is.is;



public class BeforeClass {

@Managed(uniqueSession = true, driver = "chrome")
public WebDriver driver;
@Steps
public AuthSteps compare;
@Steps
public AuthSteps login;
@Steps
public AuthSteps pass;
@Steps
public AuthSteps enter;
@Steps
public AuthSteps in;


@Before
public void myTest() throws Exception {
    System.setProperty("webdriver.chrome.driver", "C:\\Test\\FrameOrderThucydides\\src\\main\\resourse\\chromedriver.exe");
    compare.start_browser();
    driver.manage().window().maximize();
}
@After
public void close() throws IOException {
    driver.close();
}
public void assertText(String login) {
    if (login == null){
        Assert.assertThat(login.getText(),is("Тест упал поле не заполнено"));
    }
}

4.Test

import net.thucydides.core.annotations.ManagedPages;
import net.thucydides.core.annotations.Story;
import net.thucydides.core.annotations.WithTag;
import net.thucydides.core.pages.Pages;
import net.thucydides.junit.annotations.Concurrent;
import net.thucydides.junit.runners.ThucydidesRunner;
import org.junit.Test;
import org.junit.runner.RunWith;
import utils.Application;


@Story(Application.RozCompare.Compare.class)
@RunWith(ThucydidesRunner.class)
@Concurrent(threads = "1")
public class VideoCompareTest extends BeforeClass {
@ManagedPages(defaultUrl = "http://igrad.test-lemon.com")
public Pages pages;

@WithTag("Авторизация")
@Test
public void compareTwoCards() throws InterruptedException {
compare.addEntry();

login.addLogin();
assertText();
pass.addPass();
enter.addEnter();
in.addAuth();
Thread.sleep(3000);
 }

Подскажите пожалуйста , как правильно делать такие проверки, и стоит ли вообще в фусидиде делать проверки, если в случае какой-либо ошибки, фрейм в отчете покажет в чем проблема. Заранее спасибо!


(inkvizitorz) #2

Используйте ассерты обязательно!

Пример:
@Step ("Проверка статуса запроса")
public void should_be_checked_status (String status) {
assert universalRequestPage.checkTextStatus().equalsIgnoreCase(status) : "Invalid request status";
}

реализация public String checkTextStatus () {
textStatus.waitUntilEnabled();
return textStatus.getTextValue();
}

Обратите внимание, что для разных элементов и в разных ситуациях нужно использовать разные методы получения текста элемента.
Например, getTextValue(), getText() и т.п.
Для того, чтобы определить, что именно в данном случае подходит, я просто
вывожу результаты вызова методов в консоль с помощью System.out.println()