Java / Selenium - java.lang.NullPointerException - PullRequest
0 голосов
/ 05 июля 2018

Когда я выполняю тест, у меня появляется это «java.lang.NullPointerException». Как я могу исправить эту проблему? Уже проверяют другие темы, но все еще есть некоторые проблемы. Буду очень рад решить эту проблему.

Тест (клик страницы входа):

public class MainPage {
private WebDriver driver;

static WebDriver wait;

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

@FindBy (xpath = "//a[text()='Sign in']" )
private WebElement signInButton;

public LoginPage clickSignIn() {
    signInButton.click();
    return new LoginPage(driver);
}

Main:

public class MainPageTest {
private WebDriver driver;
private MainPage mainPage;


@Before
public void setUp() {
    driver = new ChromeDriver();
    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    driver.manage().window().maximize();
    driver.get("https://github.com");
    mainPage = new MainPage(driver);

}

@Test
public void signInTest(){
    LoginPage loginPage = mainPage.clickSignIn();
    String heading = loginPage.getHeadingText();
    Assert.assertEquals("Sign in to GitHub", heading);
}

@After
public void tearDown(){
    driver.quit();
}

Класс LoginPage:

public class LoginPage {
WebDriver driver;

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

private By loginField = By.xpath(".//*[@id='login_field']");
private By passwordField = By.xpath(".//*[@id='password']");
private By signInButton = By.xpath("//input[@type='submit']");
private By heading = By.xpath("//div[contains(@class, 'auth-form-   header')]/h1");
private By error = By.xpath(".//*[@id='js-flash-container']//div[@class='container']");
private By createAccLink = By.xpath("//a[text()='Create an account']");

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Исключение для нулевого указателя наступает, потому что вы не инициализировали класс Pagefatory.

Для написания сценария вы можете обратиться к блогу ниже

http://toolsqa.com/selenium-webdriver/page-object-pattern-model-page-factory/

0 голосов
/ 05 июля 2018

Вы не инициализировали класс модели объекта вашей страницы, и, следовательно, генерируется исключение NULL Pointer. Итак, signInButton необходимо переместить внутрь кнопки clickSignIn, как показано ниже

public LoginPage clickSignIn() {
    WebElement signInButton=driver.findElement(By.xpath("//a[text()='Sign in']"));
    signInButton.click();
    return new LoginPage(driver);
}

еще

вам нужно инициализировать ваш класс MainPage, как показано ниже

    public MainPage(WebDriver driver) {
        this.driver = driver;
        PageFactory.initElements(driver, this);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...