Java 使用testng运行selenium代码时获取NullPointerException错误消息

Java 使用testng运行selenium代码时获取NullPointerException错误消息,java,selenium-webdriver,testng,Java,Selenium Webdriver,Testng,错误消息 package parallel_3; import org.testng.Assert; import org.testng.annotations.Test; import parallel_2.Headers; import parallel_2.Images; import parallel_2.Styles; import utils.BrowserUtils; public class Test_02 extends BrowserUtils { Headers

错误消息

package parallel_3;

import org.testng.Assert;
import org.testng.annotations.Test;
import parallel_2.Headers;
import parallel_2.Images;
import parallel_2.Styles;
import utils.BrowserUtils;

public class Test_02 extends BrowserUtils {
    Headers headers;
    Images images;
    Styles styles;

    private final String HEADER_FILE_PATH ="C:\\Users\\sdad\\Downloads\\Projects\\Demo-Website\\Headers.html",
            IMAGES_FILE_PATH ="C:\\Users\\sdad\\Downloads\\Projects\\Demo-Website\\Images.html";

    @Test
    public void test(){
        driver.get(IMAGES_FILE_PATH);

        images = new Images(driver);
        Assert.assertEquals(driver.getTitle(), "Images");
        Assert.assertEquals(images.header2.getText(), "Image with width and height");
        images.styles_link.click();

        styles = new Styles(driver);
        Assert.assertEquals(driver.getTitle(), "Page Styles");
        Assert.assertEquals(styles.paragraph.getText(), "This is a paragraph");
        styles.images_link.click();

        headers = new Headers(driver);
        Assert.assertEquals(driver.getTitle(), "Headers");
        Assert.assertEquals(headers.header4.getText(), "This is Header 4");
        headers.images_link.click();
    }
}

@BeforeTest
不会在所有
@Test
中运行,只在第一个测试之前运行,因此
驱动程序
永远不会初始化。从


同样适用于
@AfterTest
@AfterMethod

下面是testngxml文件。当我运行单个类时,时间测试通过,没有任何错误,但当我并行运行时,我收到错误消息,您必须共享driver.get(IMAGES\u FILE\u PATH)的实现;从Stacktrace
驱动程序
本身判断应该为空。当您并行运行测试时,您是否验证了setUp方法是否被执行(在同一线程中)?
package parallel_3;

import org.testng.Assert;
import org.testng.annotations.Test;
import parallel_2.Headers;
import parallel_2.Images;
import parallel_2.Styles;
import utils.BrowserUtils;

public class Test_01 extends BrowserUtils {
    Headers headers;
    Images images;
    Styles styles;

    private final String HEADER_FILE_PATH ="C:\\Users\\sdad\\Downloads\\Projects\\Demo-Website\\Headers.html",
            IMAGES_FILE_PATH ="C:\\Users\\sdad\\Downloads\\Projects\\Demo-Website\\Images.html";

    @Test
    public void test(){
        driver.get(HEADER_FILE_PATH);
        headers = new Headers(driver);
        Assert.assertEquals(driver.getTitle(), "Headers");
        Assert.assertEquals(headers.header4.getText(), "This is Header 4");
        headers.images_link.click();

        images = new Images(driver);
        Assert.assertEquals(driver.getTitle(), "Images");
        Assert.assertEquals(images.header2.getText(), "Image with width and height");
        images.styles_link.click();

        styles = new Styles(driver);
        Assert.assertEquals(driver.getTitle(), "Page Styles");
        Assert.assertEquals(styles.paragraph.getText(), "This is a paragraph");
        styles.images_link.click();
    }
}
package parallel_3;

import org.testng.Assert;
import org.testng.annotations.Test;
import parallel_2.Headers;
import parallel_2.Images;
import parallel_2.Styles;
import utils.BrowserUtils;

public class Test_02 extends BrowserUtils {
    Headers headers;
    Images images;
    Styles styles;

    private final String HEADER_FILE_PATH ="C:\\Users\\sdad\\Downloads\\Projects\\Demo-Website\\Headers.html",
            IMAGES_FILE_PATH ="C:\\Users\\sdad\\Downloads\\Projects\\Demo-Website\\Images.html";

    @Test
    public void test(){
        driver.get(IMAGES_FILE_PATH);

        images = new Images(driver);
        Assert.assertEquals(driver.getTitle(), "Images");
        Assert.assertEquals(images.header2.getText(), "Image with width and height");
        images.styles_link.click();

        styles = new Styles(driver);
        Assert.assertEquals(driver.getTitle(), "Page Styles");
        Assert.assertEquals(styles.paragraph.getText(), "This is a paragraph");
        styles.images_link.click();

        headers = new Headers(driver);
        Assert.assertEquals(driver.getTitle(), "Headers");
        Assert.assertEquals(headers.header4.getText(), "This is Header 4");
        headers.images_link.click();
    }
}
java.lang.NullPointerException
    at parallel_3.Test_01.test(Test_01.java:20)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
@BeforeTest: The annotated method will be run before any test method belonging to the classes inside the <test> tag is run.
@BeforeMethod: The annotated method will be run before each test method.