首页 > 解决方案 > 以下代码的 selenium webdriver 中的空指针异常

问题描述

        public class NewTest 
          {
        @FindBy(id="btnSearch")
        public WebElement search;
        public WebDriver driver;

         @Test
         public void openMyBlog() {
         driver.manage().window().maximize();
         driver.get("url");

           search.click();
             try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        }

      @BeforeClass
      public void beforeClass() {

          System.setProperty("webdriver.chrome.driver", "D:\\Driver\\chromedriver_win32\\chromedriver.exe");
          driver  = new ChromeDriver();
      }

      @AfterClass
      public void afterClass() {
          driver.close();
      }
    }

收到如下错误:

[RemoteTestNG] detected TestNG version 6.14.2
Starting ChromeDriver 2.45.615291 (ec3682e3c9061c10f26ea9e5cdcf3c53f3f74387) on port 44992
Only local connections are allowed.
Jan 29, 2019 12:59:55 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
FAILED: openMyBlog
java.lang.NullPointerException
    at testngproject.NewTest.openMyBlog(NewTest.java:28)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:580)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:716)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:988)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
    at org.testng.TestRunner.privateRun(TestRunner.java:648)
    at org.testng.TestRunner.run(TestRunner.java:505)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
    at org.testng.SuiteRunner.run(SuiteRunner.java:364)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
    at org.testng.TestNG.runSuites(TestNG.java:1049)
    at org.testng.TestNG.run(TestNG.java:1017)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)


===============================================
    Default test
    Tests run: 1, Failures: 1, Skips: 0
===============================================


===============================================
Default suite
Total tests run: 1, Failures: 1, Skips: 0
===============================================

我尽力解决这个问题,但没有这样做。任何人都可以帮助我解决这个收到的空指针异常的解决方案

我尽力解决这个问题,但没有这样做。任何人都可以帮助我解决这个收到的空指针异常的解决方案。

标签: javaselenium

解决方案


在您的程序中添加以下代码并尝试重新运行:

NewTest() {
    PageFactory.initElements(driver, this);
}

当您使用 POM(页面对象模型)时,您需要在使用它之前初始化所有元素,并且 PageFactory.initElements() 会这样做。


推荐阅读