У меня такие же аннотации, что у моей иерархии классов есть некоторые проблемы.Я пробовал
@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, а затем браузер открывается без каких-либо проблем.Затем откроется страница входа в систему, и она просто выдаст исключение без входа в текстовую область входа.Это может быть вызвано любой проблемой аннотации?