Ошибка NullPointerException после попытки вызвать метод из другого класса Java Selenium TestNG - PullRequest
0 голосов
/ 10 июля 2020

У меня 2 класса: ClassA, где я пытаюсь вызвать метод из класса ClassB:

public class ClassA {
    WebDriver driver;

    @Test
    public void methodA() {
        ClassB.methodB();
        driver.get("https://example.com");
    }
}

и ClassB, где существует необходимый метод:

public class ClassB {
    static WebDriver driver;

    public static void methodB() {
        System.setProperty("webdriver.chrome.driver", "E:\\Autotests\\Drivers\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.manage().deleteAllCookies();
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
    }
}

Но это совсем не работает. Мне удалось открыть браузер с помощью метода B, но затем URL-адрес не может быть открыт, и в консоли я вижу ошибку:

java.lang.NullPointerException
    at autotests_groups_v1.ClassA.bookingProcess(BookingAnonyomus.java:20)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
...

Я пробовал разные способы вызова метода из другого класса, но в основном ошибка в консоль каждый раз одна и та же. Так что, я полагаю, проблема не в root. Вот почему было бы хорошо, если бы кто-нибудь объяснил мне, что именно вызывает эту ошибку в моем случае. Заранее спасибо.

1 Ответ

0 голосов
/ 10 июля 2020

Когда вы вызываете ClassB.methodB();, вы инициализируете поле driver в ClassB. Затем, когда вы вернетесь из метода и перейдете к driver.get("https://example.com");, вы используете поле driver из ClassA, поэтому вы, очевидно, получите NPE, поскольку оно все еще null.

...