3

私は webdriver を使用した自動テストの初心者です。

java.lang.NullPointerException
    at SuccessfullHoverTestCib.testSuccessfullHoverTestCib
    (SuccessfullHoverTestCib.java:29)
    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).....

次のコードを実行しています。

public class SuccessfullHoverTestCib {
    private WebDriver driver;
    private String baseUrl;
    private StringBuffer verificationErrors = new StringBuffer();

    @Before
    public void setUp() throws Exception {
        File pathToFirefoxBinary = new File("C:\\Documents and Settings\\chakarova\\Local Settings\\Application Data\\Mozilla Firefox\\firefox.exe");  
        FirefoxBinary firefoxbin = new FirefoxBinary(pathToFirefoxBinary);
        WebDriver driver = new FirefoxDriver(firefoxbin,null); 
        baseUrl = "http://cibnew.sofia.ifao.net:7001/cib_web/web";
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    }

    @Test
    public void testSuccessfullHoverTestCib() throws Exception {
        driver.get(baseUrl);
        driver.findElement(By.id("inputButton")).click();
        driver.findElement(By.linkText("Hotels")).click();
        driver.findElement(By.id("pageLink_57")).click();
    }

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

エラー トレースをポイントすると、テストmethod->driver.get(baseUrl);にリンクします。この問題は へのパスの定義に関連していると思いますが、firefox.exe修正方法がわかりません。

4

1 に答える 1

12

setUp() メソッドでは、driver という名前のローカル WebDriver 変数を宣言し、それを新しい driver インスタンスに設定しています。クラスレベルのドライバー変数がインスタンスに設定されることはないため、常に null です。

public class SuccessfullHoverTestCib {
    private WebDriver driver;
    private String baseUrl;
    private StringBuffer verificationErrors = new StringBuffer();

    @Before
    public void setUp() throws Exception {
        File pathToFirefoxBinary = new File("C:\\Documents and Settings\\chakarova\\Local Settings\\Application Data\\Mozilla Firefox\\firefox.exe");  
        FirefoxBinary firefoxbin = new FirefoxBinary(pathToFirefoxBinary);

        // **** This is the line that changes.
        // **** Note the lack of the WebDriver type.
        driver = new FirefoxDriver(firefoxbin,null); 
        baseUrl = "http://cibnew.sofia.ifao.net:7001/cib_web/web";
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    }

    // The rest of your class should remain the same
}
于 2012-10-05T18:03:46.183 に答える