簡體   English   中英

Selenium webdriver:多個驅動程序

[英]Selenium webdriver : Multiple drivers

我已經使用3種驅動程序firefox,chrome和IE進行了自動化測試。

static WebDriver driver ;
    public static void main(String args[]) {
        try {

            driver = new FirefoxDriver();
            runTest(driver, "FireFox");

            //Chrome
            System.setProperty("webdriver.chrome.driver","E:/selinium_drivers/chromedriver.exe");
            driver = new ChromeDriver();
            runTest(driver, "Chrome");

            //IE
            System.setProperty("webdriver.ie.driver","E:/selinium_drivers/IEDriverServer.exe");
            driver = new InternetExplorerDriver();
            runTest(driver, "IE");
            }

問題是第二個驅動程序在第一個驅動程序完成處理之前就已啟動。 我如何才能停止第二個驅動程序,直到第一個驅動程序完成工作。

public static void runTest(WebDriver driver, String browserName) {
        try {
            testLogin(driver);
            testSignupC(driver);
            testSignUpCLogin(driver);
            driver.close();
        } catch(Exception ex) {
            //log stack trace
            //Alter(test failed in browser name)
        }
    }

您沒有提到您的WebDriver版本。 我的評論基於API 2.45。

首先,您應該調用driver.quit()而不是close()

/**
 * Close the current window, quitting the browser if it's the last window currently open.
 */
void close();

/**
 * Quits this driver, closing every associated window.
 */
void quit();

其次,您應該在finally塊中確保驅動程序關閉:

try {
    testLogin(driver);
    testSignupC(driver);
    testSignUpCLogin(driver);
} catch(Exception ex) {
    //log stack trace
    //Alter(test failed in browser name)
} finally {
    driver.quit();
}

另外,我將在WebDriverException上用try / catch包圍quit() ,並將driver設置為null ,以防止其重用,因為驅動程序初始化( startClient()startSession() ...)是在構造函數中完成的:

} finally {
    try {
        driver.quit();
    catch (WebDriverException e) {
        // log if useful else NO OP
    }
    driver = null;
}

暫無
暫無

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

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