簡體   English   中英

如何在WebDriver類中初始化一次驅動程序,然后使用它來啟動其他類?

[英]How to initialize driver once in WebDriver class and then use it to start other classes?

如果在testng.xml中有10個類,它將打開10個瀏覽器會話。 如何初始化驅動程序一次,只為一個測試用例打開一個瀏覽器,然后為第二個測試用例再次關閉並打開一個窗口,依此類推?

我在構造函數中有驅動程序安裝代碼,這也許是一種不好的處理方式? 如何在TNGDriver類中對其進行初始化,然后在Testcase1類中使用它?

我嘗試使用@BeforeClass並有一個setUp方法,但是沒有用。

TNGDriver類

public abstract class TNGDriver {

public static WebDriver driver;
private static String chromeDriverPath = "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe";  

@SuppressWarnings("deprecation")
public TNGDriver() {        
    DesiredCapabilities capabilities = DesiredCapabilities.chrome();
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--incognito");
    capabilities.setCapability(ChromeOptions.CAPABILITY, options);
    System.setProperty("webdriver.chrome.driver", chromeDriverPath);        
    driver = new ChromeDriver(capabilities);    
    driver.manage().window().maximize();            
}

public static WebDriver getDriver() {
    return driver;
}

public static void setDriver(WebDriver driver) {
    TNGDriver.driver = driver;
}

Testcase1類

public class Testcase1 extends Registration {

    @Test(priority = 1) 
    public void step1_checkSomething() {        
        //do something
    }

    @Test(priority = 2)
    public void step2_clickOnSomething() {          
        //click on something            
    }

}

的testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="AutomationFramework" parallel="false" preserve-order="true">
    <test name="Registration">      
        <classes>
            <class name="regression.Testcase01" />
            <class name="regression.Testcase02" />              
        </classes>      
    </test>             
</suite>

默認情況下,Chrome驅動程序會在每次打開私有窗口時打開,您實際上不需要這樣做。

//options.addArguments("--incognito");

您可以使結構如下所示:

public class TNGDriver {

public static WebDriver driver;
private static String chromeDriverPath = "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe";  

public void DriverConfiguration() {        
    DesiredCapabilities capabilities = DesiredCapabilities.chrome();
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--incognito");  
    capabilities.setCapability(ChromeOptions.CAPABILITY, options);
    System.setProperty("webdriver.chrome.driver", chromeDriverPath);        
    driver = new ChromeDriver(capabilities);    
    driver.manage().window().maximize();            
}

public void QuitDriver(){
    driver.quit();
}

}

單元測試用例:

public class Testcase1 extends Registration {

TNGDriver objTND = new TNGDriver();

    @BeforeTest
    public void initializeDriver(){
    objTND.DriverConfiguration();  
    }

    @Test(priority = 1) 
    public void step1_checkSomething() {        
        //do something
    }

    @Test(priority = 2)
    public void step2_clickOnSomething() {          
        //click on something            
    }

    @AfterTest
    public void initializeDriver(){
    objTND.QuitDriver();  
    }
}

如果要在每個@Test之前使用瀏覽器(打開),則可以使用帶有@BeforeMethod批注的相同方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM