昨天我的测试正常,我想用testng破产,然后出现了问题。我的主要课程LeadTest:
public class leadTest {
WebDriver driver;
@Test
public void f() {
..
...
...
/*------------------------Go to leads page-------------------------------*/
LeadsPage ldsP = new LeadsPage(driver);
dbp.gotoLeadsPage();
ldsP.findLeadByName("nameToFind");
}
@BeforeClass
public void beforeClass() {
driver = new FirefoxDriver();
driver.get("http://getbase.com");
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
}
和我的班级LeadsPage:
public class LeadsPage {
WebDriver driver;
String expStatus = "new";
@FindBy(id="leads-new")
WebElement addLead;
@FindBy(className = "lead-status")
WebElement UserStatus;
public void addNewLead(){
addLead.click();
}
public void checkUsrStat(){
String stat = UserStatus.getText().toLowerCase();
Assert.assertEquals(stat, expStatus.toLowerCase());
}
public void findLeadByName(String leadName){
driver.findElement(By.partialLinkText(leadName)).click();
}
public LeadsPage(WebDriver driver){
PageFactory.initElements(driver, this);
}
我从上面有这部分的问题:
public void findLeadByName(String leadName){
driver.findElement(By.partialLinkText(leadName)).click();
}
我有错误
AILED: f
java.lang.NullPointerException
at leadTest.LeadsPage.findLeadByName(LeadsPage.java:38)
at leadTest.leadTest.f(leadTest.java:101)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
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)
当我使用
@FindBy(partialLinkText="nameToFind")
WebElement ntf;
和
ntf.click();
它的工作,但我不能做到这一点,因为在地方nameToFind将是可变的。
我不知道怎么了...请帮帮我
驱动程序变量未初始化:您尝试在空对象上调用findElement()方法。
确认的一种方法是打印驱动程序值:
System.out.println("driver=" + driver);
就在抛出异常之前
public void findLeadByName(String leadName){
System.out.println("driver=" + driver);
driver.findElement(By.partialLinkText(leadName)).click();
}
我也注意到了
LeadsPage ldsP = new LeadsPage(driver);
dbp.gotoLeadsPage();
ldsP.findLeadByName("nameToFind");
gotoLeadsPage(); 和findLeadByName(); 两种功能都在同一类LeadsPage中,但是使用不同的对象dbp和ldsp
可能在下面的更改会起作用。
在LeadsPage类中,更改您的findLeadByName(); 功能如下
public void findLeadByName(WebDriver driver, String leadName){
this.driver.findElement(By.partialLinkText(leadName)).click();
}
在您的类LeadTest调用函数findLeadByName()中,如下所示:
LeadsPage ldsP = new LeadsPage(driver);
ldsP.findLeadByName(driver ,"nameToFind");
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句