【问题标题】:NullPointerException error after trying to call a method from another class Java Selenium TestNG尝试从另一个类 Java Selenium TestNG 调用方法后出现 NullPointerException 错误
【发布时间】:2020-07-10 17:41:42
【问题描述】:

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

但它根本不起作用。我使用methodB成功打开浏览器,但是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)
...

我尝试了不同的方法来调用另一个类的方法,但基本上控制台中的错误每次都是一样的。所以我想这不是问题的根源。 这就是为什么如果有人向我解释在我的情况下究竟是什么导致了这个错误,那就太好了。 提前致谢。

【问题讨论】:

  • 驱动是B类的一个属性。使用 driver=ClassB.driver 也许?或者通过构造函数将classB传递给classA...这是一个架构问题,也许您只想在这里拥有一个类...如果使用两个,也许您的初始化方法在ClassB中,并且您将驱动程序返回给方法调用。 ..(如果 ClassB 仅用于实用方法...)
  • 我不能在一堂课中全部使用它。我现在有不同的类,我试图通过使用其他类的方法来避免代码的重复。不管怎样,你提到的关于使用 ClassB 类的驱动程序的观点是正确的,它现在可以工作了!非常感谢。

标签: java selenium nullpointerexception testng


【解决方案1】:

当您调用ClassB.methodB(); 时,您会初始化ClassB 中的driver 字段。然后,当您从该方法返回并继续到 driver.get("https://example.com"); 时,您使用的是 ClassAdriver 字段,因此您显然会得到 NPE,因为它仍然是 null

【讨论】:

  • 谢谢你,阿列克谢。确实,这就是问题所在,我根据 pcalkins 的评论通过使用 ClassB 中的驱动程序修复了它: driver=ClassB.driver 不确定它是否是最佳选择,但它仍然有效。
猜你喜欢
  • 2019-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多