0

我正在尝试运行此代码,但我得到空指针异常。我正在使用 Junit 4.10 和 Selenium 2.24.1 JARS。

例外是在 @After " driver.quit(); "

当我在家中使用 Desktop 运行相同的代码时,它似乎工作正常。唯一的区别是我运行 Eclipse Indigo @ home 而我在这里运行 Eclipse Ganymede。但我不认为这应该是一个问题,除非我弄错了。

堆栈跟踪:在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 在 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 在 sun.reflect 的 framework.Ford.tearDown(Ford.java:36) 的 java.lang.NullPointerException。 DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)

谢谢。

public class Ford {

    static private WebDriver driver;
    static private String baseUrl;
    static private StringBuffer verificationErrors = new StringBuffer();

    @Before
    public void setUp() throws Exception {
        driver = new FirefoxDriver();
        baseUrl = "http://www.google.com/";
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    }

    @Test
    public void testFord() throws Exception {
        driver.get(baseUrl + "/finance");
        driver.findElement(By.linkText("AA")).click();
        driver.findElement(By.id("gbqfq")).click();
        driver.findElement(By.id("gbqfq")).clear();
        driver.findElement(By.id("gbqfq")).sendKeys("f");
        driver.findElement(By.id(":1")).click();
    }

    @After
    public void tearDown() throws Exception {
        driver.quit();
        String verificationErrorString = verificationErrors.toString();
        if (!"".equals(verificationErrorString)) {
            fail(verificationErrorString);
        }
    }

}
4

1 回答 1

0

您可以在 tearDown() 方法中进行此更改后尝试吗?

@After
public void tearDown() throws Exception {
    if (driver != null)
    driver.quit();
    String verificationErrorString = verificationErrors.toString();
    if (!"".equals(verificationErrorString)) {
        fail(verificationErrorString);
    }
}

这可能会解决问题。

于 2012-06-29T07:08:09.130 回答