使用TestNG在Selenium WebDriver中获取空指针异常
我是Selenium的新手,在运行下面的脚本时,我得到了空指针异常,并且测试在站点调用加载后立即停止运行。我无法理解例外的原因 代码如下所示:使用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
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();