2014-05-23 112 views
0

如果我想使用頁面對象模型頁面工廠測試多個瀏覽器,我將如何初始化瀏覽器?硒頁面與頁面對象模型頁面工廠

目前我已經iniatialized在我的基類的瀏覽器是這樣的。

// initialise driver/browser 

public void initDriver() throws MalformedURLException{ 
    if(CONFIG.getProperty("browser").equals("firefox")){ 
     cap = DesiredCapabilities.firefox(); 
     cap.setBrowserName("firefox"); // chrome,iexplore 
     cap.setPlatform(Platform.ANY); 
    }else if (CONFIG.getProperty("browser").equals("chrome")){ 
     cap = DesiredCapabilities.chrome(); // no need path of chrome exe 
     cap.setBrowserName("chrome"); 
     cap.setPlatform(Platform.ANY); 
    }else if (CONFIG.getProperty("browser").equals("iexplore")){ 
     cap = DesiredCapabilities.internetExplorer(); // no need path of chrome exe 
     cap.setBrowserName("iexplore"); 
     cap.setPlatform(Platform.WINDOWS); 
    } 
    if(driver == null){ 
     driver=new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"),cap); 
    } 
    String waitTime=CONFIG.getProperty("default_implicitWait"); 
    driver.manage().timeouts().implicitlyWait(Long.parseLong(waitTime), TimeUnit.SECONDS); 
    } 

但是,這隻能運行我的測試我的測試只在其中一個瀏覽器。

這是我的testng.xml文件

<suite name="Selenium Grid with webdriver" > 
<listeners> 
    <listener class-name="Codes.listener.TestsListenerAdapter" /> 
</listeners> 
<test name="Login test"> 
    <classes> 
     <class name="Codes.testCases.LoginTest" ></class> 
    </classes> 
</test> 
</suite> 
+0

你是說你想要並行運行嗎? –

+0

是的,我想平行運行。 –

+0

如何從配置文件中獲取瀏覽器名稱?原因是因爲你有一個if塊你認爲它可以運行所有的瀏覽器? – Vinay

回答

1

您的瀏覽器初始化似乎確定,但我想知道,爲什麼當driver == null你應該在以下方式提高您的testng.xmlcap未初始化:

要運行測試方法並行:

<suite name="Selenium Grid with webdriver" parallel="methods" thread-count="5" > 
    <listeners> 
     <listener class-name="Codes.listener.TestsListenerAdapter" /> 
    </listeners> 
    <test name="Login test"> 
     <classes> 
      <class name="Codes.testCases.LoginTest" ></class> 
     </classes> 
    </test> 
</suite> 

同樣,你可以定義parallel = "classes"parallel = "tests"選擇並行執行級別。

+0

我嘗試使用testng.xml的代碼,但測試仍在瀏覽器上運行。 –

1

正如@Priyanshu所說,你需要改變你的testng.xml。我相信你已經更新了你的testng.xml,但是根據你上面的testng.xml文件,你只有一個<class><test>,所以在你的情況下parallel="methods"(我假設你想要並行執行不同的測試腳本,而不是相同測試的不同方法腳本)或parallel="classes"將不起作用。將其更改爲parallel="tests",然後嘗試像這樣運行: -

<suite name="Selenium Grid with webdriver" parallel="tests" thread-count="5" > 
    <listeners> 
     <listener class-name="Codes.listener.TestsListenerAdapter" /> 
    </listeners> 
    <test name="Login test"> 
     <classes> 
      <class name="Codes.testCases.LoginTest" ></class> 
     </classes> 
    </test> 

    <test name="Login test2"> 
     <classes> 
      <class name="Codes.testCases.LoginTest2" ></class> 
     </classes> 
    </test> 

    <test name="Login test3"> 

    <!-- class etc.. etc.. --> 

    </test> 

</suite>