2013-06-21 3 views
1

Есть мой класс, который использует Selenium WebDriver и выдает ошибку.java.lang.NullPointerException при запуске тестового файла через Selenium webDriver в Chrome

public class Test_Chromedriver { 
    public static WebDriver driver; 
    public static void main(String[] args) { 
     try { 
System.setProperty("webdriver.chrome.driver","E:\\jars\\chromedriver.exe"); 
      WebDriver driver=new ChromeDriver(); 
      driver.get("http://www.facebook.com"); 
      driver.findElement(By.id("email")).sendKeys("surya"); 
      driver.findElement(By.name("pass")).sendKeys("hello"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     finally{ 
      driver.close(); 
      driver.quit(); 
     } 
    } 
} 

раз я побежал выше код ниже Сообщение об ошибке получает:

Started ChromeDriver 
port=12877 
version=23.0.1240.0 
log=D:\Eclipse Juno Workspace\AS Selenium workspace\WebDriver Applications\chromedriver.log 
Exception in thread "main" java.lang.NullPointerException 
    at Test_Chromedriver.main(Test_Chromedriver.java:25) 

Примечание: WebDriver открытия хром браузер затем введите значения в поля, но выше ошибки становится отображаться все времена в консоли и, наконец, блок также не выполняется.

+3

Это не ошибка, это исключение. Обратите внимание, что Исключение указывает, что это происходит в строке 25. Измените свой вопрос, чтобы указать, какая строка - строка 25. –

ответ

4

Ваша проблема исходит от вашего try/catch и особенно вашего finally.

Потому что ваш driver находится только локально в вашем try{}, поэтому ... ваш finally не может что-то сделать с вашим водителем. Я переименую ваши драйверы, чтобы помочь вам узнать, что здесь происходит.

public class Test_Chromedriver { 
    public static WebDriver driverNULL; // <- never instantiate 
    public static void main(String[] args) { 
     try { 
      System.setProperty("webdriver.chrome.driver","E:\\jars\\chromedriver.exe"); 
      WebDriver driverOK=new ChromeDriver(); // < - local variable 
      driverOK.get("http://www.facebook.com"); 
      driverOK.findElement(By.id("email")).sendKeys("surya"); 
      driverOK.findElement(By.name("pass")).sendKeys("hello"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     finally{ 
      driverNULL.close(); // <- want to close a object never instantiate so null pointer exception 
      driverNULL.quit(); 
     } 
    } 
} 

Что вы теперь можете сделать?

public class Test_Chromedriver { 
    public static WebDriver driver; 
    public static void main(String[] args) { 
     try { 
      System.setProperty("webdriver.chrome.driver","E:\\jars\\chromedriver.exe"); 
      driver=new ChromeDriver(); // <- remove the Webdriver type 
      driver.get("http://www.facebook.com"); 
      driver.findElement(By.id("email")).sendKeys("surya"); 
      driver.findElement(By.name("pass")).sendKeys("hello"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     finally{ 
      driver.close(); 
      driver.quit(); 
     } 
    } 
} 
+1

Благодарим вас за ответ и руководство по этому вопросу. теперь я могу запустить код без «NullPointerException» – SuryaQA

+1

отличная идея с именованием - у меня была аналогичная проблема и я понял, что вы имеете в виду сразу – kiedysktos

0

Возможно, попробуйте использовать TestNG и аннотации?

http://testng.org/doc/index.html

Они делают из Их работают довольно неплохо.

Использование этого типа структуры даст вам хорошую голову для обеспечения проверки и выполнения.

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.testng.annotations.AfterClass; 
import org.testng.annotations.BeforeClass; 
import org.testng.annotations.Test; 

public class Test_Chromedriver { 
    public static WebDriver driver; 


    @BeforeClass 
    public void setUp(){ 
     System.setProperty("webdriver.chrome.driver","E:\\jars\\chromedriver.exe""); 
     driver=new ChromeDriver(); 

} 
    @Test 
    public static void TestFacebook() { 
     try { 
      driver.get("http://www.facebook.com"); 
      driver.findElement(By.id("email")).sendKeys("surya"); 
      driver.findElement(By.name("pass")).sendKeys("hello"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 



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

} 
+0

Спасибо за ответ. просто я установил TestNG и запустил тестовый тест с помощью TestNG. теперь я могу запустить тестовый файл без «NullPointerException». – SuryaQA