【问题标题】:null pointer exception in selenium webdriver for the below code [duplicate]以下代码的 selenium webdriver 中的空指针异常 [重复]
【发布时间】:2019-01-29 13:52:06
【问题描述】:
        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
===============================================

我尽力解决这个问题,但没有这样做。谁能帮助我解决这个收到的空指针异常的解决方案

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

【问题讨论】:

  • 预期输出是什么,您的代码在哪一行失败?
  • [RemoteTestNG] 在端口 44992 上检测到 TestNG 版本 6.14.2 正在启动 ChromeDriver 2.45.615291 (ec3682e3c9061c10f26ea9e5cdcf3c53f3f74387) 仅允许本地连接。 2019 年 1 月 29 日下午 12:59:55 org.openqa.selenium.remote.ProtocolHandshake createSession INFO:检测到方言:OSS FAILED:openMyBlog java.lang.NullPointerException at testngproject.NewTest.openMyBlog(NewTest.java:28) at sun。在 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 上的 reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  • 嗨@David Pérez Cabrera,对于您所链接的内容,这不是重复的问题。它与POM(Page Object Model)设计模式有关。
  • @AliCSE 不是初始化对象和 NPE? stackoverflow.com/a/218390/4796021
  • @@David Pérez Cabrera 哦!好的,那就没事了。

标签: java selenium


【解决方案1】:

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

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

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

【讨论】:

  • 您能否详细介绍一下您的解决方案?错误是什么,您的解决方案是如何工作的,等等?
  • 参考This Link,因为你使用的是@FindBy,那么你需要使用PageFactory.initElements()来初始化所有的元素字段。因此,当类被调用时,类构造函数被调用,并在那里通过初始化所有元素。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-04
相关资源
最近更新 更多