我在一个包中创建了两个类。在第一个类中,我添加了一些函数,在第二个类中,我调用了这些方法并添加了一些脚本。
package vma;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class Vehicles {
static WebDriver driver2;
@BeforeTest
public static void start() throws InterruptedException
{Login.setup(driver2,"FF","S","FS");
}
@Test
public static void step1() throws InterruptedException
{
Thread.sleep(7000);
driver2.findElement(By.xpath("//div[@class='mainContainer']/div/div/div[2]/div/ul/li[7]/h3/a")).click();
driver2.findElement(By.name("make")).sendKeys("AA");
driver2.findElement(By.name("model")).sendKeys(Model);
driver2.findElement(By.id("idNext")).click();
Thread.sleep(3000);
}
}
现在我运行这个脚本。@ BeforeTest脚本运行成功但@Test脚本失败。错误:java.lang.NullPointerException出现了。请各位帮帮我,我错了,或者我在脚本中错过了什么。 例外:
FAILED: step1
java.lang.NullPointerException
at vma.Vehicles.step1(Vehicles.java:35)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
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:128)
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:1203)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1128)
at org.testng.TestNG.run(TestNG.java:1036)
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)
Thanks in advance.
答案 0 :(得分:3)
driver2
是否已初始化?我不这么认为。
例如,如果您对Safari浏览器进行测试,那么您需要执行以下操作:
WebDriver driver = new SafariDriver()
然后使用此对象进行自动化。
答案 1 :(得分:0)
您是否初始化了driver2对象?看起来不像你对我做的那样。您尝试访问其方法,但此时它为空。
答案 2 :(得分:0)
这是由于初始化驱动程序变量并使用它而发生的。 (100%肯定)
尝试使用它(如果你使用firefox作为驱动程序)
driver2 = new FirefoxDriver();