Hello,
Base:
public class Base{
String remote_grid_server_url = "
http://localhost:4444/wd/hub";
public WebDriver driver;
ChromeOptions chromeOptions = new ChromeOptions();
@BeforeTest
public void beforeTest(final ITestContext testContext) throws MalformedURLException {
driver = new RemoteWebDriver(new URL(remote_grid_server_url), chromeOptions);
driver.manage().window().maximize();
}
@AfterTest
public void afterTest() throws InterruptedException {
System.out.println("afterTest");
}
}
FirstTest
public class FirstTest extends
Base {
@Test
public void test1() {
System.out.println("FirstTest test1");
driver.get("
http://www.gmail.com");
}
}
SecondTest
public class SecondTest extends
Base {
@Test
public void test1() {
System.out.println("SecondTest test1");
driver.get("
http://www.aol.com");
}
}
ThirdTest
public class ThirdTest extends
Base {
@Test
public void test1() {
System.out.println("ThirdTest test1");
driver.get("
http://www.hotmail.com");
}
}
XML
<!DOCTYPE suite SYSTEM "
https://testng.org/testng-1.0.dtd">
<suite name="Access Regression Suite" parallel="tests">
<test name="Test1">
<classes>
<class name="Grid.FirstTest" />
<class name="
Grid.ThirdTest" />
</classes>
</test>
<test name="Test2">
<classes>
<class name="
Grid .SecondTest" />
</classes>
</test>
</suite>
Error:
java.lang.NullPointerException: Cannot invoke "org.openqa.selenium.WebDriver.get(String)" because "this.driver" is null
at Grid.ThirdTest.test1(ThirdTest.java:12)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:133)
at org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:598)
at org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:173)
at org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46)
at org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:824)
at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:146)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at org.testng.TestRunner.privateRun(TestRunner.java:794)
at org.testng.TestRunner.run(TestRunner.java:596)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:377)
at org.testng.SuiteRunner.access$000(SuiteRunner.java:28)
at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:418)
at org.testng.internal.thread.ThreadUtil.lambda$execute$0(ThreadUtil.java:64)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
Under <Test1> tag, I have two tests: FIrstTest and ThirdTest. ThirdTest is failing. How can I instantiate the remote webdriver to fix the problem?
Thank you!