首页 > 解决方案 > 网络驱动管理器

问题描述

public class MyDriverManager {
private WebDriver webdriver;
@BeforeClass
public static void beforeClass()
{
    WebDriverManager.chromedriver().setup();
    WebDriverManager.firefoxdriver().setup();
    WebDriverManager.edgedriver().setup();
}
@BeforeMethod
public void beforeMethod()
{
    webdriver=new ChromeDriver();
    webdriver.manage().window().maximize();
}
@AfterMethod
public  void AfterMethod()
{
    webdriver.close();
}
@Test
public  void test()
{
    webdriver.get("http://www.google.com/");
}

}

在运行@Test时,我收到 java.lang.NullPointerException 作为错误,任何人,请让我知道我在哪里犯了错误。另外,有没有可行的方法在框架中使用它,以便我可以访问我的功能文件?我在 RunnerClass 中尝试过使用它,但似乎不是正确的方法。

标签: javaseleniumcucumber

解决方案


当您直接运行 @Test 时,我假设您正在使用一些 IDE 并右键单击 @Test 注释并运行它。如果是这种情况,很可能您的@BeforeMethod没有被调用,因此 WebDriver 出现为null

要验证这一点,您可以调试或放置某种打印语句来检查。

如果您没有调试(只是修改了您的代码),请使用下面的代码来验证错误

public class MyDriverManager {
private WebDriver webdriver;
@BeforeClass
public static void beforeClass()
{
    WebDriverManager.chromedriver().setup();
    WebDriverManager.firefoxdriver().setup();
    WebDriverManager.edgedriver().setup();
}
@BeforeMethod
public void beforeMethod()
{
    System.out.println( " control is inside beforeMethod now");
    webdriver=new ChromeDriver();
    webdriver.manage().window().maximize();
}
@AfterMethod
public  void AfterMethod()
{
    webdriver.close();
}
@Test
public  void test()
{
    System.out.println( " control is inside test method now");
    webdriver.get("http://www.google.com/");
}

}

推荐阅读