2014-04-21 51 views
0

我想在多個瀏覽器中運行一次後,只運行一次我的webdriver腳本。在我目前的框架中,我已經將所有瀏覽器名稱保存在屬性文件中,並從那裏獲取並傳遞參數。但問題是這樣,在一次執行中它只運行一個瀏覽器。如果我想在另一個瀏覽器中運行它,我必須通過第二個瀏覽器名稱進行第二次執行。 我想運行它一次,腳本應該執行一個瀏覽器,然後自動應該運行其他瀏覽器also.i我使用Junit。 怎樣才能做到這一點?如何在不改變參數的情況下在多個瀏覽器中運行Selenium webdriver腳本-java,

回答

0

看看Seleniun Grid或者您可以創建一個TestSuite並使用System屬性來設置瀏覽器。

是這樣的:

1-創建測試套件的所有測試用例你

import org.junit.runner.RunWith; 
import org.junit.runners.Suite; 
import org.junit.runners.Suite.SuiteClasses; 

@RunWith(Suite.class) 
@SuiteClasses({ MyClassTest.class, MySecondClassTest.class }) 
public class AllTests { 

} 

2-運行套房設置第一

import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 

    public class MyTestRunner { 
     public static void main(String[] args) { 
     //Set browser 
     System.setProperty("browser","Firefox"); 
     Result result = JUnitCore.runClasses(AllTests.class); 
     for (Failure failure : result.getFailures()) { 
      System.out.println(failure.toString()); 
     } 

     System.setProperty("browser","Explorer"); 
     Result result = JUnitCore.runClasses(AllTests.class); 
     for (Failure failure : result.getFailures()) { 
      System.out.println(failure.toString()); 
     } 
     //.... Rest of the browsers .... // 
     } 
    } 

3-使用該選項的屬性你應該得到財產並安裝你的測試(System.getProperty("browser");

public class MyClassTest{ 
    private webDriver = new webDriver(); 

    @Before 
    public void setUp(){ 
     String browser = System.getProperty("browser"); 
     if(browser.equals("Firefox")) 
      this.driver = new FirefoxDriver(); 
     else if(browser.equals("Explorer") 
      this.driver = new ..... 

     ..... 
    } 

    //Your tests 
    @Test 
    -.... 

Hope help!

+0

感謝@Morvader我得到了你的觀點通過創建一個測試套件運行的類。你能否說明你在MyTestRunner中做了什麼?是否只是在屬性文件中設置屬性值。在哪裏使用getproperty方法來獲取瀏覽器名稱 – rv05

+0

@ rv05我已經更新了答案。希望有幫助! – Morvader

+0

感謝@Morvader。這對我來說非常合適。 – rv05

0

在@Morvader提到的方式執行後,我得到了事情做得很好。

我發現了另一種方法來做同樣的事情,而無需創建額外的類即Testrunner類。

通過@RunWith(Parameterized.class),這可以更簡單的方式來實現。在這種方法中不需要創建額外的TestRunner類的開銷。想到分享這個。

0

如果你想使用@RunWith(Parameterized.class)作爲測試套件(@RunWith(Suite.class)),你會發現在標準的JUnit 4中沒有兩者的組合。

您可以實現自己的Runner或使用擴展庫就像this one

相關問題