2017-04-17 235 views
0

我想在三個不同的瀏覽器中並行運行一個功能文件。 如何創建三個不同的webdriver實例? 請添加如何爲兩個不同的功能文件做同樣的事情?黃瓜跨瀏覽器測試

P.S.我正在用java工作黃瓜。

+0

你使用的是testng還是junit? – Grasshopper

+0

我正在使用junit。 –

回答

0

當你提到「三個平行的不同的瀏覽器」你的意思是像的Chrome,Firefox和探險家在Chrome僅的平行 OR 三種不同的情況下運行。

如果是請參閱本文 - https://opencredo.com/running-cucumber-jvm-tests-in-parallel/。這背後的基本邏輯是爲所需的並行實例的數量分成單獨的JVM。這是使用Maven surefire插件完成的。

如果第一個的情況下,那麼你將需要修改某些方面。該插件將'fork number'傳遞給JVM,您可以使用它來實例化該JVM的特定瀏覽器驅動程序。

我使用Java 8, junit 4.12, picocontainer for Dependency Injection, Maven 3(不會以較低的版本一起爲「叉號」傳遞空),selenium 2.53(u需要弄清楚的硒3碼的變化,如果在驅動程序的創建需要)和瀏覽器Chrome and Firefox(你需要添加代碼爲IE)。

代碼從文章的github

  1. 更改ShareDriver.java - 這個覆蓋靜態塊,並添加其他方法。
static { 
     instantiateDriver();   
     Runtime.getRuntime().addShutdownHook(CLOSE_THREAD); 
} 

private static void instantiateDriver() { 

     //numFork will be passed in the maven command line or eclipse 
     //--- clean install -DnumFork=${surefire.forkNumber} 
     int browserType = Integer.parseInt(System.getProperty("numFork")); 

     System.out.println("BROWSER TYPE "+browserType); 

     if(browserType == 1) 
      instantiateChromeDriver(); 

     else if (browserType == 2) 
      instantiateFirefoxDriver(); 

     else if (browserType == 3) {  
      instantiateIEDriver(); 
     }  

    } 

    private static void instantiateIEDriver() { 
     //Implement this 
    } 

    private static void instantiateFirefoxDriver() { 

     REAL_DRIVER = new FirefoxDriver(); 
     REAL_DRIVER.manage().window().maximize(); 
    } 

    private static void instantiateChromeDriver() { 

     System.setProperty("webdriver.chrome.driver", "location of chromedriver.exe"); 
     ChromeOptions chop = new ChromeOptions(); 
     chop.addArguments("test-type"); 
     chop.addArguments("start-maximized"); 
     chop.addArguments("--disable-extensions"); 

     REAL_DRIVER = new ChromeDriver(chop); 
    } 
  • 更改feature files - 取下標籤。更改其中一個功能文件以包含其他一些步驟。編碼步驟定義類中的新步驟。

  • 更改爲runner classes - 從cucumber選項中刪除標籤選項,您可能需要添加glue選項以指向您的步驟定義類。所以有效的跑步者類都是一樣的。如果需要,可以刪除其中一個跑步者類。其他測試將在每個瀏覽器中重複兩次。

  • pom.xml - 確保定義的分叉數量(<surefire.fork.count>5</surefire.fork.count>)大於您正在使用的瀏覽器數量。否則邏輯將失敗。

  • 運行Maven中 - 您可以從Eclipse在目標選擇使用命令clean install -DnumFork=${surefire.forkNumber}插件運行。或從命令行使用mvn clean install -DnumFork=${surefire.forkNumber}

    這應該在所有瀏覽器實例中的所有功能文件中運行所有方案。您可以優化標籤和功能等cucumberoptions以運行特定方案或功能文件。

    +0

    我的意思是第一個案子。 –

    0

    我會選擇執行構建三次。我將爲每個執行決定使用哪個瀏覽器設置一個環境變量。

    要並行運行它們,我會編寫一個shell腳本來設置環境變量並啓動三次執行。