FAILED CONFIGURATION:@BeforeClass beforeClass

时间:2016-08-02 14:47:33

标签: selenium-webdriver

我是Selenium的初学者,现在我在TestNG框架中使用@DataProvider来传递网页中的一些值(学习目的)。以下是我的代码:

package Framework;

import org.testng.annotations.Test;
import org.testng.annotations.DataProvider;
import org.testng.annotations.BeforeClass;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterClass;

public class DataProv {

    WebDriver d;
    @Test(dataProvider = "dp", priority=0)
    public void signin(String uname, String pwd) throws InterruptedException {
        d.findElement(By.linkText("SIGN-ON")).click();
        d.findElement(By.name("userName")).sendKeys(uname);
        d.findElement(By.name("password")).sendKeys(pwd);
        Thread.sleep(3000);
    }

    @Test(dataProvider = "dp1", priority=1)
    public void reg(String fname) throws InterruptedException {
        d.findElement(By.linkText("REGISTER")).click();
        d.findElement(By.name("firstName")).sendKeys("fname");
        d.findElement(By.name("register")).click();
        Thread.sleep(3000);
    }

    @DataProvider
    public Object[][] dp() {
        return new Object[][] {
          new Object[] { "Rachel", "India123" },
          new Object[] { "Rita", "pass123" },
        };
    }

    @DataProvider
    public Object[][] dp1() {
      return new Object[][] {
        new Object[] { "Rachel"},
        new Object[] { "Rita"},
      };
    }
    @BeforeClass
    public void beforeClass() {
        d.manage().window().maximize();
        d = new FirefoxDriver();
        d.get("http://newtours.demoaut.com/");
    }

    @AfterClass
    public void afterClass() {
        d.close();
    }
  }

不,我收到以下错误

  

FAILED CONFIGURATION:@BeforeClass beforeClass
  显示java.lang.NullPointerException

有人可以帮我解决这个问题。 提前致谢

2 个答案:

答案 0 :(得分:0)

什么是Null Pointer Exception

此问题即将发生,因为您尝试在不初始化浏览器的情况下最大化浏览器。

您只需颠倒启动浏览器的顺序,然后在@BeforeClass方法中将其最大化。

因此,当您说WebDriver d时,引用dNULL,因此当您尝试在manage()上调用方法d时,您基本上都在尝试使用null对象调用此方法,即null.manage(),这就是为什么Null Pointer Exception,所以你首先必须使用d = new FirefoxDriver()来实例化它;

d = new FirefoxDriver();
d.manage().window().maximize();

答案 1 :(得分:0)

检查您的浏览器调用方法。我认为您的驱动程序(d)找不到要测试的驱动程序。您需要在调用driver == new driver之前指出驱动程序路径。以下是chrome驱动程序代码供您参考。

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