Java 尝试从testng.xml运行测试时出现NullPointerException

Java 尝试从testng.xml运行测试时出现NullPointerException,java,selenium,selenium-webdriver,nullpointerexception,testng,Java,Selenium,Selenium Webdriver,Nullpointerexception,Testng,因此,接下来的问题是——我正试图重构我的基本测试以进行多浏览器并行测试,但是在从testng.xml文件运行代码之后,我得到了NullPointerExeption。 我的基本测试: public class BaseTest { String browser = System.getProperty("browser"); WebDriver driver = null; @Parameters("browser")

因此,接下来的问题是——我正试图重构我的基本测试以进行多浏览器并行测试,但是在从testng.xml文件运行代码之后,我得到了NullPointerExeption。 我的基本测试:

public class BaseTest {

    String browser = System.getProperty("browser");
    WebDriver driver = null;

    @Parameters("browser")
    @BeforeMethod(alwaysRun = true)
    public void setUp() {
        System.out.println("Current browser is " + browser);

        if (browser.equalsIgnoreCase("chrome")) {
            WebDriverManager.chromedriver().setup();
            driver = new ChromeDriver();
        } else if (browser.equalsIgnoreCase("firefox")) {
            WebDriverManager.firefoxdriver().setup();
            driver = new FirefoxDriver();
        } else if (browser.equalsIgnoreCase("edge")) {
            WebDriverManager.edgedriver();
            driver = new EdgeDriver();
        }
        driver.manage().window().maximize();
        driver.get("https://demo.prestashop.com/");
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        BasePage.setDriverThreadLocal(driver);
    }

    @AfterMethod(alwaysRun = true)
    public void tearDown() {
        getDriver().quit();
    }

}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite thread-count="2" name="Suite" parallel="methods">
    <test thread-count="2" name="Test" parallel="methods">
        <parameter name="browser" value="chrome"/>
        <classes>
            <class name="SubscribeWithInvalidEmailTest"/>
            <class name="CheckLanguagesTest"/>
        </classes>
    </test>
</suite>
我的testng.xml配置:

public class BaseTest {

    String browser = System.getProperty("browser");
    WebDriver driver = null;

    @Parameters("browser")
    @BeforeMethod(alwaysRun = true)
    public void setUp() {
        System.out.println("Current browser is " + browser);

        if (browser.equalsIgnoreCase("chrome")) {
            WebDriverManager.chromedriver().setup();
            driver = new ChromeDriver();
        } else if (browser.equalsIgnoreCase("firefox")) {
            WebDriverManager.firefoxdriver().setup();
            driver = new FirefoxDriver();
        } else if (browser.equalsIgnoreCase("edge")) {
            WebDriverManager.edgedriver();
            driver = new EdgeDriver();
        }
        driver.manage().window().maximize();
        driver.get("https://demo.prestashop.com/");
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        BasePage.setDriverThreadLocal(driver);
    }

    @AfterMethod(alwaysRun = true)
    public void tearDown() {
        getDriver().quit();
    }

}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite thread-count="2" name="Suite" parallel="methods">
    <test thread-count="2" name="Test" parallel="methods">
        <parameter name="browser" value="chrome"/>
        <classes>
            <class name="SubscribeWithInvalidEmailTest"/>
            <class name="CheckLanguagesTest"/>
        </classes>
    </test>
</suite>

如果您能为我提供任何帮助,我将不胜感激。

有两件事-

  • 您正试图使用System.getProperty(“浏览器”)获取浏览器属性,但您以前没有在任何地方设置它,因此浏览器变量将始终为null。请先在别处设置属性
  • 您正在传递一个参数browser,但是setUp()函数不接受任何参数,因此浏览器变量保持null,并出现NullPointerException错误。你应该像下面那样使用它
  • 现在,浏览器变量将具有testng.xml传递给代码的值,并且不应再给出NullPointerException

    如果您仍然面临任何问题,那么我建议您共享堆栈跟踪,这有助于进一步调试