2016-11-23 3 views
0

hat Ich bin neu bei JAVA und Selenium und ich möchte wirklich verstehen, warum mein Code nicht funktioniert und die NullPointerException ausgelöst wird.NullPointerException bei Verwendung eines Objekts, um eine Methode aufzurufen, die Selenium WebDriver-Code

Grundsätzlich möchte ich eine Methode aufrufen, die WebDriver-Implementierungen aus einer anderen Klasse als "Master Test" -Klasse hat, die als JUnit-Test ausgeführt werden.

Aber jedes Mal, wenn ich meinen Master-Test ausführe, wird NullPointerException geworfen.

Hier ist mein Meister-Test, der ausgeführt wird:

package common_methods; 

import org.junit.*; 

public class Master_Test extends Configurations { 

    @Before 
    public void setUp(){ 
     try{ 
     testConfiguration(); 
     driver.get("http://only-testing-blog.blogspot.ro/"); 
     } catch (Exception e){ 
      System.out.println("setUp Exception: "+e); 
     } 
    } 

    @After 
    public void tearDown(){ 
     driver.close(); 
    } 

    @Test 
    public void masterTest(){ 
     try{ 
     TestCase1 testy1 = new TestCase1(); 
     testy1.test1(); 
     }catch (Exception master_e){ 
      System.out.println("Test Exception: "+master_e); 
     } 
    } 
} 

Jetzt hier zum besseren Verständnis ist die Konfigurationen der Klasse, die erweitert wird:

package common_methods; 

import org.openqa.selenium.*; 
import org.openqa.selenium.chrome.ChromeDriver; 

public class Configurations { 

    public WebDriver driver; 

    public void testConfiguration() throws Exception{ 
     System.setProperty("webdriver.chrome.driver", "D:\\Browser_drivers\\chromedriver_win32\\chromedriver.exe"); 
     driver = new ChromeDriver(); 
    } 
} 

Und hier ist die TestCase1 Klasse, aus dem ich bekomme meine Methode:

package common_methods; 

import org.openqa.selenium.*; 

public class TestCase1 extends Configurations{ 

    public void test1() throws Exception{ 
     driver.findElement(By.id("tooltip-1")).sendKeys("Test Case 1 action"); 
     Thread.sleep(5000); 
    } 
} 

Warum bekomme ich die NullPointerException?

Antwort

0

In Master_Test, wo Sie

TestCase1 testy1 = new TestCase1(); 

Sie anrufen müssen die Treiber Referenz zu übergeben, so dass sie nicht die Nullpointer nicht geben. Außerdem müssten Sie einen Konstruktor in der TestCase1-Klasse hinzufügen, um den Treiber zu behandeln.

Überprüfen Sie den folgenden Code.

import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

public class Configurations { 

    public WebDriver driver; 

    public void testConfiguration() { 
     driver = new FirefoxDriver(); 
    } 
} 

Master_Test

import org.junit.Before; 
import org.junit.Test; 
import org.openqa.selenium.WebDriver; 



public class Master_Test extends Configurations { 

    @Before 
    public void setUP() { 
     testConfiguration(); 
     driver.get("http://www.google.com"); 
    } 

    @Test 
    public void masterTest() { 
     TestCase1 test = new TestCase1(driver); 
     test.test1(); 
    } 
} 

TestCase1

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 

public class TestCase1 extends Configurations { 

    public TestCase1(WebDriver driver) { 
     this.driver = driver; 
    } 

    public void test1() { 
     driver.findElement(By.id("lst-ib")).sendKeys("test"); 
    } 
} 
+0

Dank Anish - Ich habe es mit FirefoxDriver & Google verwendet! Es funktioniert und ich verstehe, warum es nicht funktioniert hat :) –

Verwandte Themen