Ошибка отправки формы после Basic Authorization

java
selenium
webdriver
Теги: #<Tag:0x00007f7b611df4f0> #<Tag:0x00007f7b611df2c0> #<Tag:0x00007f7b611def50>

(Влада Нижельская) #1

Ситуация такая: при заходе на сайт требуется Basic Authorization, после прохода которой загружается страница с инпутами email и password и кнопка сабмит.

Basic Authorization прохожу используя

driver.navigate().to("https://user:pass@link");

Открывается страница с формой, но при попытке ввода данных через .sendKeys ничего не получается и IntelliJ IDEA выдает ошибку java.lang.NullPointerException

Не могу понять в чем ошибка.


(Valentin G ) #2

Было бы неплохо увидеть код теста, и собственно строку, на которой падает.
Предварительная причина проблемы - WebElement или PageObject не инициирован.


(Влада Нижельская) #3

Страница с формой

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;

public class DmLoginPage {
    private WebDriver driver;

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

    private By loginInput = By.xpath("//input[@id='login-login']");
    private By loginPass = By.xpath("//input[@id='login-password']");
    private By loginButton = By.xpath("//input[@id='login-submit']");


    public DmPage enterDM(String email, String pass){
        driver.findElement(loginInput).sendKeys(email);
        driver.findElement(loginPass).sendKeys(pass);
        driver.findElement(loginButton).click();
        return new DmPage(driver);
    }
}

Сам тест

import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

import java.util.concurrent.TimeUnit;

public class DmPageTest {
    private WebDriver driver;
    private DmLoginPage dmLoginPage;
    private DmPage dmPage;


    @Before
    public void setUp() throws Exception {
        System.setProperty("webdriver.chrome.driver", "D:\\vlada\\automate\\p2h_unit_tests\\drivers\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
        driver.navigate().to("https://xx:pass@devmarkup.com/dev-login.html");
      
    }

    @Test
    public void searchTask() {
        dmLoginPage.enterDM("test-manager@p2h.com", "PJAsEQCF");
        dmPage.enterTaskNum("190104441247");
        dmPage.searchTask();
        dmPage.enterProject();
    }

(Valentin G ) #4

Как и говорил, где у вас инициализируются данные PageObjects:?

private DmLoginPage dmLoginPage;
private DmPage dmPage;

Инициизируйте их либо в Setup методе, если они будут использоваться в нескольких тестах, либо в начале данного теста.


(Влада Нижельская) #5

блин, поняла. спасибо