2016-06-22 48 views
1
import org.testng.annotations.Test; 
import org.testng.annotations.BeforeMethod; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.testng.annotations.AfterMethod; 

    public class TestNG { 
     public WebDriver driver; 

    @Test 
     public void main() throws Exception { 
     driver.findElement(By.id("account")).click(); 
     driver.findElement(By.id("log")).sendKeys("********"); 
     driver.findElement(By.id("pwd")).sendKeys("*****"); 
     driver.findElement(By.id("login")).click(); 
     System.out.println("Login Successfully :-)"); 
     driver.findElement(By.id("account_logout")).click(); 
     Thread.sleep(15000); 
    } 
    @BeforeMethod 
     public void beforeMethod() { 
     System.setProperty("webdriver.chrome.driver", "D:\\chromedriver_win32 (1)\\chromedriver.exe"); 
     WebDriver driver = new ChromeDriver(); 
     driver.manage().window().maximize(); 
     driver.get("http://store.demoqa.com/"); 
    } 

    @AfterMethod 
     public void afterMethod() { 
     driver.quit(); 
    } 
} 

的@BeforeMethod成功運行,並且推出了指定的網站,但網頁打開後,它應該朝的主要功能即@BeforeMethod移動,但無法進一步移動到執行測試用例。 請告訴我,代碼有問題嗎?無法通過TestNG的

以下錯誤,我們正在: -

[TestNG的]跑步:

C:\Users\gmohammad\AppData\Local\Temp\testng-eclipse--1784470156\testng-customsuite.xml 

Starting ChromeDriver 2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4) on port 6093 
Only local connections are allowed. 
FAILED CONFIGURATION: @AfterMethod afterMethod 
java.lang.NullPointerException 
    at com.ghulam.TestNG.afterMethod(TestNG.java:33) 
    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:85) 
    at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:510) 
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:211) 
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:703) 
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:816) 
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1124) 
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125) 
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108) 
    at org.testng.TestRunner.privateRun(TestRunner.java:774) 
    at org.testng.TestRunner.run(TestRunner.java:624) 
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:359) 
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354) 
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312) 
    at org.testng.SuiteRunner.run(SuiteRunner.java:261) 
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1215) 
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1140) 
    at org.testng.TestNG.run(TestNG.java:1048) 
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:126) 
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:137) 
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:58) 

FAILED: f 
java.lang.NullPointerException 
    at com.ghulam.TestNG.f(TestNG.java:15) 
    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:85) 
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:639) 
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:816) 
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1124) 
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125) 
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108) 
    at org.testng.TestRunner.privateRun(TestRunner.java:774) 
    at org.testng.TestRunner.run(TestRunner.java:624) 
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:359) 
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354) 
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312) 
    at org.testng.SuiteRunner.run(SuiteRunner.java:261) 
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1215) 
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1140) 
    at org.testng.TestNG.run(TestNG.java:1048) 
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:126) 
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:137) 
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:58) 


=============================================== 
    Default test 
    Tests run: 1, Failures: 1, Skips: 0 
    Configuration Failures: 1, Skips: 0 
=============================================== 


=============================================== 
Default suite 
Total tests run: 1, Failures: 1, Skips: 0 
Configuration Failures: 1, Skips: 0 
=============================================== 

[TestNG] Time taken by [email protected]: 24 ms 
[TestNG] Time taken by [email protected]: 148 ms 
[TestNG] Time taken by [email protected]: 39 ms 
[TestNG] Time taken by [email protected]: 15 ms 
[TestNG] Time taken by [email protected]: 123 ms 
[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 21 ms 

回答

0

嘗試用下面的代碼..

我想這是發生由於聲明驅動程序再次在您的@BeforeMethod方法使驅動程序對象本地方法本身。

注意:試圖執行你的代碼,它在"driver.findElement(By.id("account_logout")).click();" ..再次失敗..請糾正這一點,並再次運行,它將工作。

package testcases; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.testng.annotations.AfterMethod; 
import org.testng.annotations.BeforeMethod; 
import org.testng.annotations.Test; 

public class TestNG { 
    public WebDriver driver; 

    @Test 
    public void main() throws Exception { 
     driver.findElement(By.id("account")).click(); 
     driver.findElement(By.id("log")).sendKeys("********"); 
     driver.findElement(By.id("pwd")).sendKeys("*****"); 
     driver.findElement(By.id("login")).click(); 
     System.out.println("Login Successfully :-)"); 
     driver.findElement(By.id("account_logout")).click(); 
     Thread.sleep(15000); 
    } 

    @BeforeMethod 
    public void beforeMethod() { 
     System.setProperty("webdriver.chrome.driver", "E:\\chromedriver.exe"); 
     driver = new ChromeDriver(); 
     driver.manage().window().maximize(); 
     driver.get("http://store.demoqa.com/"); 
    } 

    @AfterMethod 
    public void afterMethod() { 
     driver.quit(); 
    } 
} 
+0

感謝您,請允許我告訴我除了Chrome驅動程序位置之外,您在我的代碼中所做的更改! @ M06494h –

+0

在你的beforeMethod方法中,我改變如下,其餘部分保持不變。 從 WebDriver driver = new ChromeDriver(); 至 driver = new ChromeDriver(); – M06494h