2017-10-10 8 views
-1

Ich habe ein einfaches Selenium TestNG Skript wie folgt geschrieben, aber einen Fehler java.lang.NullPointerException bei der @AfterTest Methode erhalten. Kannst du bitte helfen?Selenium TestNG: driver.close() und driver.quit()

public class TestngDemo1  
     { 
      public WebDriver driver; 
      public String url="https://www.guru99.com/"; 

      @Test 
      public void LaunchURL() throws InterruptedException {   
       System.setProperty("webdriver.chrome.driver", "C:/Users/AB28488/Desktop/javawork 
     space/TestNGProject/drivers/chromedriver.exe"); 
       WebDriver driver= new ChromeDriver(); 
       driver.get(url); 
       Thread.sleep(2000); 
       String eTitle="Meet Guru99 - Free Training Tutorials & Video for IT Courses"; 
       String aTitle=driver.getTitle(); 
       Reporter.log(aTitle); 
       Thread.sleep(3000); 
       Assert.assertEquals(aTitle, eTitle); 
       Reporter.log("This will print if titles match!",true); 
      } 

      @BeforeMethod 
      public void BeforeMethod() { 
       Reporter.log("Before Method"); 
      } 

      @AfterMethod 
      public void afterMethod() { 
       Reporter.log("After method",true); 
      } 

      @AfterTest 
      public void quitDriver() { 
       driver.quit(); 
      } 

     } 
+0

öffentlicher WebDriver-Treiber; & WebDriver driver = neuer ChromeDriver(); Warum werden zwei Instanzen von Treiber erstellt? – Pradeep

+0

In Ihnen vor der Testmethode folgenden Code hinzufügen driver = new ChromeDriver(); statt instanziieren innerhalb der Testmethode – Pradeep

+0

Konvertieren Sie Ihre Klasse in testng – zsbappa

Antwort

0

Da in Ihrem Test, den Sie lokal sichtbar Treiber definieren

public class TestngDemo1 
{ 
    // This is your "global" driver 
    public WebDriver driver; 
    public String url="https://www.guru99.com/"; 

    @Test 
    public void LaunchURL() throws InterruptedException 
    { 


     System.setProperty("webdriver.chrome.driver","C:/Users/AB28488/Desktop/javawork 
       space/TestNGProject/drivers/chromedriver.exe"); 
     // This is not the same driver you have defined above as a class field   
     WebDriver driver= new ChromeDriver(); 
    } 

    @AfterTest 
    public void quitDriver() 
    { 
     // Here you're trying to call method of an object that does not exist. 
     driver.quit(); 
    } 

} 

Ausprobieren Verwenden Sie stattdessen:

public class TestngDemo1 
{ 
    // This is your "global" driver 
    public WebDriver driver; 
    public String url="https://www.guru99.com/"; 

    @Test 
    public void LaunchURL() throws InterruptedException 
    { 


     System.setProperty("webdriver.chrome.driver","C:/Users/AB28488/Desktop/javawork 
       space/TestNGProject/drivers/chromedriver.exe"); 
     driver= new ChromeDriver(); 
    } 

    @AfterTest 
    public void quitDriver() 
    { 
     driver.quit(); 
    } 

} 
+0

Danke! Können Sie mir bitte den korrigierten Code geben? –

+0

Nicht sicher, was der richtige Code wäre, da ich kein Experte in TestNG bin. Lass uns einen ausarbeiten. Versuchen Sie zuerst, "WebDriver driver = new ChromeDriver();" zu ändern. zu "driver = new ChromeDriver();" –

+0

Vielen Dank, alles! Es hat für mich funktioniert :) –

0

Verwenden Sie den folgenden Code wird es für Sie arbeiten:

public class TestngDemo1  
     { 
      public WebDriver driver; 
      public String url="https://www.guru99.com/"; 

      @Test 
      public void LaunchURL() throws InterruptedException 
      { 
      driver.get(url); 
      Thread.sleep(2000); 
      String eTitle="Meet Guru99 - Free Training Tutorials & Video for IT Courses"; 
      String aTitle=driver.getTitle(); 
      Reporter.log(aTitle); 
      Thread.sleep(3000); 
      Assert.assertEquals(aTitle, eTitle); 
      Reporter.log("This will print if titles match!",true); 
     } 

     @BeforeTest 
     public void initDriver() 
     {   
      System.setProperty("webdriver.chrome.driver","C:/Users/AB28488/Desktop/javawork 
space/TestNGProject/drivers/chromedriver.exe"); 
      driver= new ChromeDriver(); 

     } 
     @AfterTest 
     public void quitDriver() 
     { 
      driver.quit(); 
     } 

    } 
Verwandte Themen