0
package utils;

import org.openqa.selenium.Point;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;

import java.util.concurrent.TimeUnit;

public class BrowserUtils {

    public WebDriver driver = null;

    @BeforeTest
    public void setUp(){
        System.setProperty("webdriver.chrome.driver","C:\\Users\\sdad\\Downloads\\Softwares\\BrowserDrivers\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.manage().deleteAllCookies();
        driver.manage().window().setPosition(new Point(0, 0));
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
        driver.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS);
    }

    @AfterTest
    public void tearDown(){
        driver.close();
        driver.quit();
    }
}
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();
    }
}

Error message

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)
3
  • Below is the testng xml file. When I run single class that time test is passed without any error but when i run parallelly I am getting error message Commented Jul 22, 2019 at 9:22
  • 1
    You have to share the implementation for driver.get(IMAGES_FILE_PATH); Commented Jul 22, 2019 at 9:41
  • Judging from the Stacktrace driver itself should be null. Did you verify that the setUp method is executed (at all and in the same thread) when you run the tests in parallel? Commented Jul 22, 2019 at 10:42

1 Answer 1

1

@BeforeTest doesn't run for all the @Test, only before the first one, so driver is never initialized. From testng docs

@BeforeTest: The annotated method will be run before any test method belonging to the classes inside the <test> tag is run.

You can use @BeforeMethod annotation for that

@BeforeMethod: The annotated method will be run before each test method.

Same goes for @AfterTest and @AfterMethod.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.