Аннотации усложняются в селене - PullRequest
0 голосов
/ 11 октября 2018

У меня такие же аннотации, что у моей иерархии классов есть некоторые проблемы.Я пробовал

@BeforeSuit
@BeforeClass
@BeforeTest 

И все вызывает ту же ошибку.Вот мои коды.

LoginPage

public class LoginPage extends BasePage {

public LoginPage(WebDriver driver) {
    super(driver);
}

@FindBy(id = "username")
private WebElement username;

@FindBy(id = "passwor")
private WebElement password;

@FindBy(id = "loginbutton")
private WebElement loginSubmitButton;

@FindBy(id = "wrong")
private WebElement errorBox;

private void loginAction(String username, String password) {
    this.username.sendKeys(username);
    this.password.sendKeys(password);
    this.loginSubmitButton.click();
}

public void invalidLogin(String username, String password) {
    this.loginAction(username, password);
}

public HomePage validLogin(String username, String password) {
    this.loginAction(username,password);
    return PageFactory.initElements(this.driver, HomePage.class);
}

public boolean isErrorBoxDisplayed() {
    return this.errorBox.isDisplayed();
}

public void clearForm() {
    this.username.clear();
    this.password.clear();
}
}

LoginPageTest

public class LoginPageTest extends BaseTest {

@Test(dataProvider = "credentials", dataProviderClass = CredentialsDataProvider.class)
public void login(Boolean isValid, String username, String password) throws InterruptedException {
    if (isValid) {
        this.homePage = this.loginPage.validLogin(username, password);
        Thread.sleep(3000);
        assertThat(this.webDriver.getCurrentUrl(), is(equalTo(PropertyReader.getProperty("home_page"))));
    } else {
        this.loginPage.invalidLogin(username, password);
        Thread.sleep(3000);
        assertThat(this.webDriver.getCurrentUrl(), is(equalTo(PropertyReader.getProperty("login_page"))));
        this.loginPage.clearForm();
    }
}
}

BaseTest

public class BaseTest {

public WebDriver webDriver;
protected LoginPage loginPage;
protected HomePage homePage;
protected PolicyPage policyPage;

private String getDriverPath() {
    return "path\\chromedriver.exe";
}

@BeforeSuite
private void beginTest() {
    System.setProperty("webdriver.chrome.driver", this.getDriverPath());
    ChromeOptions options = new ChromeOptions();
    options.addArguments("start-maximized");
    options.addArguments("no-sandbox");
    options.addArguments("keep-alive-for-test");
    options.addArguments("dns-prefetch-disable");
    DesiredCapabilities capabilities = DesiredCapabilities.chrome();
    //capabilities.setCapability(ACCEPT_SSL_CERTS, true);
    capabilities.setCapability(ChromeOptions.CAPABILITY, options);
    this.webDriver = new ChromeDriver(capabilities);
    this.loginPage = navigateToLoginPage();
    this.homePage = PageFactory.initElements(this.getDriver(), HomePage.class);

}

protected LoginPage navigateToLoginPage() {
    navigateTo(mylink);
    return PageFactory.initElements(this.getDriver(), LoginPage.class);
}

private void navigateTo(String url) {
    this.getDriver().navigate().to(url);
}

private WebDriver getDriver() {
    return this.webDriver;
}
}

BasePage

public class BasePage {

protected WebDriver driver;

public BasePage(WebDriver driver) {
    this.driver = driver;
}
}

Вот вывод исключения

Tests run: 3, Failures: 3, Errors: 0, Skipped: 0, Time elapsed: 9.527 sec 
<<< FAILURE!
login(login.LoginPageTest)  Time elapsed: 0.007 sec  <<< FAİLURE!
java.lang.NullPointerException
at login.LoginPageTest.login(LoginPageTest.java:21)

login(login.LoginPageTest)  Time elapsed: 0 sec  <<< FAİLURE!
java.lang.NullPointerException
at login.LoginPageTest.login(LoginPageTest.java:21)

login(login.LoginPageTest)  Time elapsed: 0 sec  <<< FAİLURE!
java.lang.NullPointerException
at login.LoginPageTest.login(LoginPageTest.java:17)

Сначала он запускает метод beginTest, а затем браузер открывается без каких-либо проблем.Затем откроется страница входа в систему, и она просто выдаст исключение без входа в текстовую область входа.Это может быть вызвано любой проблемой аннотации?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...