2015-10-31 3 views
0

Я пытаюсь запустить этот код с помощью TestNG, но все, что он дает мне, это ошибка java.lang.NullPointerException. Firefox открывается, но после этого появляется ошибка. Что случилось. Пожалуйста помоги! Также необходимо запустить testNG с XML.java.lang.NullPointerException error при запуске теста ng case

public class GuestCheckout 
    { 

     public WebDriver driver ; 
     public String baseURL = "http://www.google.com"; 

    @BeforeTest 
    public void setBaseURL(){ 
     WebDriver driver = new FirefoxDriver(); 
     driver.get(baseURL); 
    } 

    @Test(priority = 0) 
    public void EmailPasswordEntry() { 
     // Entering Email and Password values 

     driver.findElement(By.id("loginRegister")).click(); 
     WebElement email = driver.findElement(By.id("head_username")); 
     email.clear(); 
     email.sendKeys("[email protected]"); 

     WebElement password = driver.findElement(By.id("head_password")); 
     password.clear(); 
     password.sendKeys("123456"); 

     driver.findElement(By.name("loginsubmit")).click(); 
    } 

    @Test(priority = 1) 
    void AssertionVerification() { 
     // Verifying "My Account" text after login 
     String bodyText = driver.findElement(By.xpath("//span[@id='loginHeader']/descendant::a[text()='My Account']")).getText(); 
     Assert.assertTrue(bodyText.contains("My Accountii"), "Not matched"); 
    } 
    } 



Error: 
-------- 

    FAILED: EmailPasswordEntry 
    java.lang.NullPointerException 
     at package_1.GuestCheckout.EmailPasswordEntry(GuestCheckout.java:31) 
     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) 
     at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84) 
     at org.testng.internal.Invoker.invokeMethod(Invoker.java:714) 
     at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901) 
     at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231) 
     at `enter code here`org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127) 
     at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111) 
     at org.testng.TestRunner.privateRun(TestRunner.java:767) 
     at org.testng.TestRunner.run(TestRunner.java:617) 
     at org.testng.SuiteRunner.runTest(SuiteRunner.java:334) 
     at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329) 
     at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291) 
     at org.testng.SuiteRunner.run(SuiteRunner.java:240) 
     at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 
     at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 
     at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224) 
     at org.testng.TestNG.runSuitesLocally(TestNG.java:1149) 
     at org.testng.TestNG.run(TestNG.java:1057) 
     at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111) 
     at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204) 
     at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175) 

and same for the second Test method 
+0

Пожалуйста вставьте подробный журнал ошибок. –

ответ

2

Поскольку вы создали экземпляр WebDriver в локальном пути и пытается использовать его в качестве глобального экземпляра, так что вы получаете Исключение нулевого указателя. Сделайте это таким образом:

public WebDriver driver ; 
    public String baseURL = "http://www.ggolge.com"; 

@BeforeTest 
public void setBaseURL(){ 
driver = new FirefoxDriver(); // Now this is a global instance for this class 
driver.get(baseURL); 
} 

@Test(priority = 0) 
public void EmailPasswordEntry() { 
    // Entering Email and Password values 

    driver.findElement(By.id("loginRegister")).click(); 
    WebElement email = driver.findElement(By.id("head_username")); 
    email.clear(); 
    email.sendKeys("[email protected]"); 

    WebElement password = driver.findElement(By.id("head_password")); 
    password.clear(); 
    password.sendKeys("123456"); 

    driver.findElement(By.name("loginsubmit")).click(); 
} 

@Test(priority = 1) 
void AssertionVerification() { 
    // Verifying "My Account" text after login 
    String bodyText = driver.findElement(By.xpath("//span[@id='loginHeader']/descendant::a[text()='My Account']")).getText(); 
    Assert.assertTrue(bodyText.contains("My Accountii"), "Not matched"); 
} 

Нет, это не является обязательным для запуска с помощью TestNG XML, если вы используете какой-то умный IDE как Eclipse, то вы можете запустить тесты без XML.

XML-файлы полезны, когда у вас есть несколько классов для совместного использования в качестве набора.

+0

Спасибо большое Priyanshu .. это сработало! Поскольку я новичок в тестировании Ng, вы можете посоветовать нам, где я могу начать обучение –

+0

http://testng.org/doc/documentation-main.html Лучшее место для изучения testng. –

+0

Не могли бы вы принять мой ответ. –

0

с тех пор, используя WebDriver ... попробуйте использовать открытые статические

public static webdriver driver

в каждом классе файлов

Смежные вопросы