-1

FrameWork code:

package FrameWorks;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;

public class FrameWorkDemo  {
    WebDriver driver;
    
    @FindBy(linkText ="/Flights")
    WebElement goToFlight;
    
    @FindBy(xpath = "//*[@id=\"FlightSearchForm_ROUND_TRIP\"]/div/div[1]/div/div[1]/div/div[2]/div[1]/button")
    WebElement leavingFrom;
    
    @FindBy(xpath ="//*[@id=\"FlightSearchForm_ROUND_TRIP\"]/div/div[1]/div/div[2]/div/div[2]/div[1]/button")
    WebElement goingTo;
    
    @FindBy(id = "search_button")
    WebElement searchbutton;

    public FrameWorkDemo(WebDriver driver) {
        this.driver = driver;
        PageFactory.initElements(driver, this);
    }

    public void Flight() {
        goToFlight.click();
    }
    public void leavingdestination(String place) {
        leavingFrom.sendKeys(place);
    }
    public void goingdestination(String dest) {
        goingTo.sendKeys(dest);
    }
    public void searchclick() {
        searchbutton.click();
    }
}

TestCase Code:

package FrameWorks;

import java.time.Duration;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

public class FrameWorkTC{
    private WebDriver driver;
    String baseUrl;
    FrameWorkDemo search;
    
        
    @Before
    public void setUp() throws Exception {
            ChromeOptions options = new ChromeOptions();
            options.addArguments("--remote-allow-origins=*");
            driver = new ChromeDriver(options);
            driver.manage().window().maximize();
            driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));
            
        }

    @Test
    public void test() {
        driver.get("https://www.expedia.co.in/");
        search.Flight();
        search.leavingdestination("New York");
        search.goingdestination("Delhi");
        search.searchclick();
        }

    @After
    public void tearDown() throws Exception {
    }
}

Here is the error that I am getting:

java.lang.NullPointerException: Cannot invoke "FrameWorks.FrameWorkDemo.Flight()" because "this.search" is null at FrameWorks.FrameWorkTC.test(FrameWorkTC.java:31) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) at java.base/java.lang.reflect.Method.invoke(Method.java:578) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:93) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:40) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:529) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:756) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:452) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)

3
  • Welcome to the community! It would help if you also posted the full error message you are getting as there is usually helpful info listed!
    – Lee Jensen
    Commented Sep 30, 2023 at 15:36
  • added the error message Commented Oct 1, 2023 at 4:16
  • This is best link where you can learn POM in 2.5hrs have a patience while learning: youtube.com/… Commented Oct 3, 2023 at 17:11

1 Answer 1

0

You need to ensure that the search object is properly initialized with the WebDriver instance.

Try adding the below to your setUp method:

    search = new FrameWorkDemo(driver);
1
  • Thanks brother, its working Commented Oct 3, 2023 at 8:38

Not the answer you're looking for? Browse other questions tagged or ask your own question.