尝试findelements时出现NullPointerException

时间:2014-01-27 16:57:59

标签: java selenium-webdriver testng

我在一个包中创建了两个类。在第一个类中,我添加了一些函数,在第二个类中,我调用了这些方法并添加了一些脚本。

        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.

3 个答案:

答案 0 :(得分:3)

driver2是否已初始化?我不这么认为。

例如,如果您对Safari浏览器进行测试,那么您需要执行以下操作:

WebDriver driver = new SafariDriver()

然后使用此对象进行自动化。

答案 1 :(得分:0)

您是否初始化了driver2对象?看起来不像你对我做的那样。您尝试访问其方法,但此时它为空。

答案 2 :(得分:0)

这是由于初始化驱动程序变量并使用它而发生的。 (100%肯定)

尝试使用它(如果你使用firefox作为驱动程序)

driver2 = new FirefoxDriver();