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);
}