Wie pass namens WebDriver driver von @BeforeMethod an @Test in TestNG Java Webdriver

Ich habe diese Klasse An:

package automationFramework;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

import pageObject.devSplashScreenPage;
import utility.BrowserType;
import utility.Constant;
import appModule.SignIn_Action;

public class SignIn {

    public WebDriver driver;



@BeforeMethod
@Parameters("browser")
public void SetUp(String browser) {

    BrowserType.Execute(driver, browser);

}

@Test
public  void signIn() {

    //Call Sign In function
    SignIn_Action.Execute(driver, Constant.StudentUsername, Constant.StudentPassword);    
 }  

@AfterMethod
public void Teardown() {
      driver.quit();

} 

  }

Wo rufe ich diesen code unter die wählt der browser mit dem parameter übergeben wird. Es funktioniert einwandfrei, er nimmt die richtigen browser und führt Sie aus.

package utility;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class BrowserType {



    @Test
    public static void Execute(WebDriver driver, String browser) {

         //Set Browsers
         if(browser.equalsIgnoreCase("firefox")) {
         driver = new FirefoxDriver();
         }

         else if (browser.equalsIgnoreCase("chrome")) { 

         {System.setProperty("webdriver.chrome.driver","C:/Users/elsid/Desktop/Eclipse/Selenium/chromedriver.exe");}
          driver = new ChromeDriver();        
          }

         else if (browser.equalsIgnoreCase("ie")) { 

              {System.setProperty("webdriver.ie.driver","C:/Users/elsid/Desktop/Eclipse/Selenium/IEDriverServer.exe");}
              driver = new InternetExplorerDriver(); 
              {DesiredCapabilities iecapabilities = DesiredCapabilities.internetExplorer();
              iecapabilities.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);}
              }

          //Implicit Wait and Maximize browser
          driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
          driver.manage().window().maximize();

          //Navigate to URL
          driver.get(Constant.URL);


    } 

    }

So alles führt völlig in Ordnung in @BeforeMethod, das Problem, das ich habe, ist der test beendet, da der Fahrer nicht pass von @BeforeMethod auf @Testen.

Wie bekomme ich die Treiber, die initiiert wird, durch ausführen von BrowserType.class in der @Test Sign_in.class. Ich denke, wie kann ich wieder die Treiber korrekt von der browsertype-und nennen es in Sign_in @Test.

Dank

InformationsquelleAutor Elsid | 2015-04-23
Schreibe einen Kommentar