我是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
有人可以帮我解决这个问题。 提前致谢
答案 0 :(得分:0)
此问题即将发生,因为您尝试在不初始化浏览器的情况下最大化浏览器。
您只需颠倒启动浏览器的顺序,然后在@BeforeClass
方法中将其最大化。
因此,当您说WebDriver d
时,引用d
为NULL
,因此当您尝试在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();