Java 为什么在实例级别声明页面对象时获取NullPOinterException?

Java 为什么在实例级别声明页面对象时获取NullPOinterException?,java,selenium-webdriver,browser-automation,Java,Selenium Webdriver,Browser Automation,如果我在本地声明“CartPage CartPage=PageFactory.initElements(driver,CartPage.class);”,即在每个方法中声明它可以工作,但如果我在类中全局声明它,则会给我空指针异常 package Repaired_IETestCases; import org.openqa.selenium.By; import org.openqa.selenium.support.PageFactory; import org.testng.annotat

如果我在本地声明“
CartPage CartPage=PageFactory.initElements(driver,CartPage.class);
”,即在每个方法中声明它可以工作,但如果我在类中全局声明它,则会给我空指针异常

package Repaired_IETestCases;

import org.openqa.selenium.By;
import org.openqa.selenium.support.PageFactory;
import org.testng.annotations.Test;

import cucumber.TestContext;
import managers.WebDriverManager;
import pageObjects.CartPage;

public class CartPageSteps extends WebDriverManager {

    

    @Test

    public void verifyValLogo() throws Exception {

        CartPage cartPage = PageFactory.initElements(driver, CartPage.class);

        cartPage.verifyLogoPresentOnHomePage();

    }

    @Test

    public void verifyHomePage() throws Exception {

        CartPage cartPage = PageFactory.initElements(driver, CartPage.class);

        cartPage.verifyHomePage();

    }

}
错误消息:

public class CartPageSteps extends WebDriverManager {



        CartPage cartPage = PageFactory.initElements(driver, CartPage.class);

 @Test

    public void verifyValLogo() throws Exception {
}

我认为对象未初始化,这就是您获得空指针的原因。 试试下面的方法-

java.lang.NullPointerException: Cannot invoke "org.openqa.selenium.SearchContext.findElement(org.openqa.selenium.By)" because "this.searchContext" is null
    at org.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement(DefaultElementLocator.java:69)
    at org.openqa.selenium.support.pagefactory.internal.LocatingElementHandler.invoke(LocatingElementHandler.java:38)
    at com.sun.proxy.$Proxy12.isDisplayed(Unknown Source)
    at pageObjects.CartPage.verifyHomePage(CartPage.java:44)
    at Repaired_IETestCases.CartPageSteps.verifyHomePage(CartPageSteps.java:36)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:132)
    at org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:599)
    at org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:174)
    at org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46)
    at org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:822)
    at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:147)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
    at java.base/java.lang.Thread.run(Thread.java:832)
CartPage cartPage = null;

@Before
public void initTest(){
   cartPage  = PageFactory.initElements(driver, CartPage.class);
}