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.