gpt4 book ai didi

java - 完成所有指令后跳过Selenium webdriver测试,并报错java.lang.NullPointerException,我该如何解决?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:21:15 26 4
gpt4 key购买 nike

package defaultTest;

import java.io.FileInputStream;

import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.DataProvider;

public class NewTest{
static WebDriver driver;
XSSFWorkbook wb;
XSSFSheet sheet1;
int numrow;

@BeforeClass
public void setUp() {
driver = new FirefoxDriver();
//gmail URL
driver.get("https://accounts.google.com/ServiceLogin?service=mail&continue=https://mail.google.com/mail/");
}

@DataProvider(name = "testdata")
public Object[][] dp() throws Exception {
Object[][] tabArray = null;
try {
FileInputStream fis = new FileInputStream(
"C:\\Users\\gaurav\\workspace\\Test\\src\\Resources\\LoginDataExcelFile.xlsx");
wb = new XSSFWorkbook(fis);
sheet1 = wb.getSheet("TestSheet");

for (int count = 0; count <= sheet1.getLastRowNum(); count++) {
XSSFRow row = sheet1.getRow(count);
//System.out.println("ID: "+row.getCell(0).toString()+"\t password : "+row.getCell(1).toString());
testLogin(row.getCell(0).toString(), row.getCell(1).toString());
}
fis.close();
} catch (Exception e) {
System.out.println(e);
}
return tabArray;
}

@Test(dataProvider = "testdata")
public void testLogin(String UserName, String Password)throws Exception {

driver.findElement(By.id("Email")).clear();
Thread.sleep(2000);
driver.findElement(By.id("Email")).sendKeys(UserName);
Thread.sleep(2000);
driver.findElement(By.id("Passwd")).clear();
Thread.sleep(2000);
driver.findElement(By.id("Passwd")).sendKeys(Password);
Thread.sleep(2000);
driver.findElement(By.name("signIn")).click();
Thread.sleep(20000);

WebElement name = driver
.findElement(By
.xpath(".//*[@id=':hw']/div/div"));
try {
Assert.assertEquals("COMPOSE", name.getText());//Used some assertion
System.out.println(name.getText());
} catch(Exception e) {
System.out.println(e);
}
}

@AfterMethod
public void afterMethod() {
driver.close();
driver.quit();
}
}

这是一个测试应用程序。运行测试前,确保excel文件只有loginID和password,没有header。
问题是,我在 excel 文件中只有一条记录,我的上述脚本成功运行一次,但是当 for 循环再次运行时,它在 excel 中找不到记录,我的测试被跳过,因此另一个测试失败。

> [TestNG] Running:  
> C:\Users\gaurav\AppData\Local\Temp\testng-eclipse-1831957551\testng-customsuite.xml
>
> COMPOSE
>
> SKIPPED: testLogin java.lang.NullPointerException at
> org.testng.internal.MethodInvocationHelper.invokeDataProvider(MethodInvocationHelper.java:149)
> at
> org.testng.internal.Parameters.handleParameters(Parameters.java:429)
> at org.testng.internal.Invoker.handleParameters(Invoker.java:1383)
> at org.testng.internal.Invoker.createParameters(Invoker.java:1075)
> at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1180)
> at
> org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
> at
> org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
> at org.testng.TestRunner.privateRun(TestRunner.java:767) at
> org.testng.TestRunner.run(TestRunner.java:617) at
> org.testng.SuiteRunner.runTest(SuiteRunner.java:334) at
> org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329) at
> org.testng.SuiteRunner.privateRun(SuiteRunner.java:291) at
> org.testng.SuiteRunner.run(SuiteRunner.java:240) at
> org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at
> org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at
> org.testng.TestNG.runSuitesSequentially(TestNG.java:1224) at
> org.testng.TestNG.runSuitesLocally(TestNG.java:1149) at
> org.testng.TestNG.run(TestNG.java:1057) at
> org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111) at
> org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204) at
> org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)
>
>
> ===============================================
> Default test
> Tests run: 1, Failures: 0, Skips: 1
> ===============================================

最佳答案

将@AfterMethod 更改为@AterClass或将@BeforeClass 更改为@BeforeMethod

附带说明一下,我会更改 --> 静态 WebDriver 驱动程序;私有(private) WebDriver 驱动程序;

关于java - 完成所有指令后跳过Selenium webdriver测试,并报错java.lang.NullPointerException,我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28810068/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com