使用TestNG在Selenium WebDriver中获取空指针异常

使用TestNG在Selenium WebDriver中获取空指针异常,selenium,selenium-webdriver,testng,testng-eclipse,Selenium,Selenium Webdriver,Testng,Testng Eclipse,我是Selenium的新手,在运行下面的脚本时,我得到了空指针异常,并且测试在站点调用加载后立即停止运行。我无法理解例外的原因 代码如下所示: package TestNGPackage; import java.util.concurrent.TimeUnit; import org.openqa.selenium.support.ui.*; import org.openqa.selenium.firefox.*; import org.openqa.selenium.*; import

我是Selenium的新手,在运行下面的脚本时,我得到了空指针异常,并且测试在站点调用加载后立即停止运行。我无法理解例外的原因

代码如下所示:

package TestNGPackage;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.support.ui.*;
import org.openqa.selenium.firefox.*;
import org.openqa.selenium.*;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeTest;

public class ParameterizationTest {
WebDriver driver;
  @Test(dataProvider="getdata")
  public void Login(String Username, String Password) 
  {
    //WebDriverWait wait= new WebDriverWait(driver,60);
    //WebElement username= wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("username")));
    WebElement username=driver.findElement(By.id("username"));
        WebElement password= driver.findElement(By.id("password"));
        username.sendKeys(Username);
        password.sendKeys(Password);
        WebElement SignIn= driver.findElement(By.tagName("button"));
        String text = SignIn.getText();
        if (text.equalsIgnoreCase("sign in")) {
            // sign in btn
            SignIn.submit();
        }
  }

  @DataProvider(name="getdata")
  public Object[][] testgetdata()
  {
      Object[][] data = new Object[3][2];
      //row1
      data[0][0]="ho@abc.com";
      data[0][1]="welcome23";
      //row2
      data[1][0]="ho@baskin.com";
      data[1][1]="welcome23";
      //row3
      data[2][0]="ho@nike.com";
      data[2][1]="welcome23";

      return data;
  }

  @BeforeMethod
  public void beforeTest() {
      WebDriver driver = new FirefoxDriver();

      driver.get("http://52.25.202.63/illweb/");
    //  driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

  }

  @AfterMethod
  public void AfterTest() {
      //driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        WebElement logout = driver.findElement(By.linkText("Logout"));
        logout.click();
        //driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.close();

  }
}
我得到以下错误:

[TestNG]正在运行: C:\Users\Ronit\AppData\Local\Temp\testng eclipse--473949223\testng-customsuite.xml [Utils]正在尝试创建C:\Users\Ronit\workspace\FirstTestingProject\test output\Default suite\Default test.xml [Utils]目录C:\Users\Ronit\workspace\FirstTestNGProject\test output\Default suite存在:true 配置失败:@AfterMethod-AfterTest java.lang.NullPointerException 在TestNGPackage.ParameterizationTest.AfterTest(ParameterizationTest.java:60) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源) 位于java.lang.reflect.Method.invoke(未知源) 位于org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:100) 位于org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:515) 位于org.testng.internal.Invoker.invokeConfigulations(Invoker.java:216) 位于org.testng.internal.Invoker.invokeMethod(Invoker.java:712) 位于org.testng.internal.Invoker.invokeTestMethod(Invoker.java:811) 位于org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1129) 位于org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129) 位于org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112) 位于org.testng.TestRunner.privateRun(TestRunner.java:746) 位于org.testng.TestRunner.run(TestRunner.java:600) 位于org.testng.SuiteRunner.runTest(SuiteRunner.java:366) 在org.testng.SuiteRunner.runSequential上(SuiteRunner.java:361) 位于org.testng.SuiteRunner.privateRun(SuiteRunner.java:319) 运行(SuiteRunner.java:268) 位于org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 位于org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 在org.testng.testng.runSuitesSequentially上(testng.java:1264) 位于org.testng.testng.runSuitesLocally(testng.java:1189) 位于org.testng.testng.runSuites(testng.java:1104) 位于org.testng.testng.run(testng.java:1076) 位于org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:126) 位于org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:152) 位于org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:57) 已跳过配置:@beforeTest之前的方法 跳过的配置:@AfterMethod-AfterTest 已跳过配置:@beforeTest之前的方法 跳过的配置:@AfterMethod-AfterTest 失败:登录(“manjeet@wtechspaces.in", "p@ssw0rd") java.lang.NullPointerException 在TestNGPackage.ParameterizationTest.Login(ParameterizationTest.java:20) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源) 位于java.lang.reflect.Method.invoke(未知源) 位于org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:100) 位于org.testng.internal.Invoker.invokeMethod(Invoker.java:646) 位于org.testng.internal.Invoker.invokeTestMethod(Invoker.java:811) 位于org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1129) 位于org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129) 位于org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112) 位于org.testng.TestRunner.privateRun(TestRunner.java:746) 位于org.testng.TestRunner.run(TestRunner.java:600) 位于org.testng.SuiteRunner.runTest(SuiteRunner.java:366) 在org.testng.SuiteRunner.runSequential上(SuiteRunner.java:361) 位于org.testng.SuiteRunner.privateRun(SuiteRunner.java:319) 运行(SuiteRunner.java:268) 位于org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 位于org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 在org.testng.testng.runSuitesSequentially上(testng.java:1264) 位于org.testng.testng.runSuitesLocally(testng.java:1189) 位于org.testng.testng.runSuites(testng.java:1104) 位于org.testng.testng.run(testng.java:1076) 位于org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:126) 位于org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:152) 位于org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:57) 已跳过:登录(“ho@baskin.com“,“welcome123”) 已跳过:登录(“ho@nike.com“,“welcome123”) =============================================== 默认测试 测试运行:3,失败:1,跳过:2 配置失败:1,跳过:4 =============================================== =============================================== 默认套件 运行的测试总数:3,失败:1,跳过:2 配置失败:1,跳过:4 =============================================== [Utils]正在尝试创建C:\Users\Ronit\workspace\FirstTestingProject\test output\testng-failed.xml [Utils]目录C:\Users\Ronit\workspace\FirstTestingProject\test输出存在:true [Utils]正在尝试创建C:\Users\Ronit\workspace\FirstTestingProject\test output\Default suite\testng-failed.xml [Utils]目录C:\Users\Ronit\workspace\FirstTestNGProject\test output\Default suite存在:true [TestNG]通过[FailedReporter=0失败=0跳过=0]所用的时间:36毫秒 [TestNG]org.testn花费的时间
driver = new FirefoxDriver();
WebDriver driver = new FirefoxDriver();