2017-11-10 2 views
2

Ich kann den Code in @test nicht ausführen, aber er wird in der @BeforeTest-Annotation ausgeführt. Es ist der Treiber geöffnet, der sich in BeforeTest Annotation befindet, aber das Element ("// * [@ id = 'lst-ib']"), das sich in @Test befindet und eine NULL-Ausnahme auslöst, kann nicht gefunden werden.Es ist nicht möglich, selbst nach der Ausführung von @BeforeTest zur @Test-Annotation zu gehen. Annotation

package package2; 

public class dataprovider { 
    WebDriver driver; 

    @BeforeTest 
    public void setup(){ 

     System.setProperty("webdriver.chrome.driver","./drivers/chromedriver.exe/"); 
     ChromeDriver driver = new ChromeDriver(); 
     driver.manage().window().maximize(); 
     driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
     driver.get("https://google.com/"); 
     /*System.setProperty("webdriver.firefox.marionette", "./drivers/geckodriver.exe/"); 
      driver = new FirefoxDriver(); 
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
      driver.get("https://google.com");*/ 
    } 

    /** Test case to verify google search box 
    * @param author 
    * @param searchKey 
    * @throws InterruptedException 
    */ 

    @Test(dataProvider="SearchProvider") 
    public void testMethod(String author,String searchKey) throws InterruptedException{ 
     { 

      WebElement searchText = driver.findElement(By.xpath("//*[@id='lst-ib']")); 
      //search value in google searchbox 
      searchText.sendKeys(searchKey); 
      System.out.println("Welcome ->"+author+" Your search key is->"+searchKey); 
      Thread.sleep(3000); 
      String testValue = searchText.getAttribute("value"); 
      System.out.println(testValue +"::::"+searchKey); 
      searchText.clear(); 
      //Verify if the value in google search box is correct 
      Assert.assertTrue(testValue.equalsIgnoreCase(searchKey)); 
     } 
    } 
    /** 
    * @return Object[][] where first column contains 'author' 
    * and second column contains 'searchKey' 
    */ 

    @DataProvider(name="SearchProvider") 
    public Object[][] getDataFromDataprovider(){ 
     return new Object[][] 
       { 
      { "Guru99", "India" }, 
      { "Krishna", "UK" }, 
      { "Bhupesh", "USA" } 
       }; 

    } 

} 

Antwort

3

In Ihrem @BeforeTest public void setup(){} Sie erstellen eine Instanz von

ChromeDriver driver = new ChromeDriver(); 

Während in testMethod die eine solche verwendet wird, die außerhalb definiert:

WebDriver driver; 

ändern

ChromeDriver driver = new ChromeDriver(); 

mit

driver = new ChromeDriver(); 
+0

Seine Arbeiten, Danke, –

+0

@bhargavporapu Glücklich zu helfen. Wenn diese Antwort oder eine andere Lösung Ihr Problem gelöst hat, markieren Sie es als akzeptiert: stackoverflow.com/help/someone-answers –

Verwandte Themen