使用页面工厂方法时如何解决硒中的空指针异常

时间:2019-07-12 17:45:39

标签: selenium selenium-webdriver

我有3类-一种用于页面定位器,一种用于页面动作,另一种作为执行功能的脚本。在调用该函数的主脚本中出现nullpointer异常。有人可以帮我吗!!!!

以下是代码:

  1. HomePageLocator.page

公共类HomePageLocator {        WebDriver驱动程序;     公共HomePageLocator(WebDriver驱动程序)        {             this.driver =驱动程序;         }

    @FindBy(xpath="//*[@id='header']/div[2]/div/div/nav/div[1]/a")
    public WebElement signIn;

}

  1. HomePageAction.page 公共类HomePageAction {

    公共WebDriver驱动程序; 公共HomePageLocator主页;或

    public HomePageAction(){

    this.homepage = new HomePageLocator(driver);
    PageFactory.initElements(driver, this.homepage);
    

    }

    public void login(){     homepageor.signIn.click();     }

  2. BaseTestCase.java

公共类BaseTestCase {

public static Logger log = Logger.getLogger("devpinoyLogger");

public static void main(String[] args) throws Throwable  {

    System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir")+"\\src\\test\\resources\\Executables\\chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    driver.get("http://automationpractice.com/index.php");
    driver.manage().window().maximize();
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

    // Home page validation
    HomePageAction homepageaction= new HomePageAction();
    homepageaction.login();


}

注意:在行中正在获取异常(homepageaction.login();) 以下是异常日志: 线程“主”中的异常java.lang.NullPointerException     在org.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement(DefaultElementLocator.java:69)     在org.openqa.selenium.support.pagefactory.internal.LocatingElementHandler.invoke(LocatingElementHandler.java:38)     在com.sun.proxy。$ Proxy3.click(未知来源)     在com.way2.Pages.actions.HomePage.login(HomePageAction.java:31)     在com.way2.Testcases.BaseTestCase.main(BaseTestCase.java:35)

1 个答案:

答案 0 :(得分:0)

您正在主类中创建驱动程序,但未将其传递给homepageAction 公共静态void main(String [] args)抛出Throwable {

System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir")+"\\src\\test\\resources\\Executables\\chromedriver.exe");
WebDriver driver = new ChromeDriver();

尝试将驱动程序传递为 HomePageAction homepageaction =新的HomePageAction(驱动程序); this.driver = driver