2015-06-24 41 views
0

我是新來硒,我需要我的單身硒測試用例使用Firefox瀏覽器(硒網格)兩個不同的節點上運行,我一直在使用下面的命令如何在兩個不同的節點上運行單個硒測試用例?

的java開始了我中心的罐子硒服務器standalone- 2.32.0.jar -role轂

節點1: Java的罐子硒 - 服務器 - 獨立-2.32.0.jar -role的webdriver -hub http://localhost:4444/grid/register -port 9595

節點2: Java的罐子selenium-server-standalone-2.32.0.jar -role webdriver -hub http://localhost:4444/grid/register -port 8585

兩個節點已被創建爲集線器。但是當我在集線器中運行測試用例時,只有一個節點正在執行測試用例,而另一個節點仍然可用但未執行測試用例。

2)節點在執行測試用例時由集線器隨機選擇。

我的問題: 運行測試用例在兩個節點同時

回答

2

節點可以聲明如下: - 對於鉻的java -Dwebdriver.chrome.driver = C

節點1:\驅動\ chromedriver.exe -jar硒 - 服務器獨立-2.44.0.jar -role節點-hub http://localhost:4444/grid/register -port 8585 -browserName =鉻

節點2用於Firefox: Java的罐子硒 - 服務器 - 獨立-2.44.0.jar -role節點-hub http://localhost:4444/grid/register -port 9595 -browserName = firefox

你需要有以下testng。XML以相同的測試案例在不同的瀏覽器中運行: -

<suite name="Selenium TestNG Suite" parallel="tests" thread-count="5"> 

    <test name="Selenium TestNG - 1"> 
     <parameter name="browser" value="firefox" /> 
     <parameter name="port" value="9595" /> 
     <classes> 
      <class name="grid.testcase" /> 
     </classes> 
    </test> 
    <test name="Selenium TestNG - 2"> 
     <parameter name="browser" value="chrome" /> 
     <parameter name="port" value="8585" /> 
     <classes> 
      <class name="grid.testcase" /> 
     </classes> 
    </test> 

</suite> 

在你的測試用例,編寫代碼是這樣的: -

package grid; 

import java.net.MalformedURLException; 
import java.net.URL; 

import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.remote.DesiredCapabilities; 
import org.openqa.selenium.remote.RemoteWebDriver; 
import org.testng.annotations.BeforeClass; 
import org.testng.annotations.Parameters; 
import org.testng.annotations.Test; 

public class testcase { 
    public WebDriver driver=null; 
    @Parameters({"browser","port"}) 
    @BeforeClass 
    public void initialize(String browser, String port) throws MalformedURLException{ 
     DesiredCapabilities capability= new DesiredCapabilities(); 
     capability.setBrowserName(browser); 
     driver= new RemoteWebDriver(new URL("http://localhost:".concat(port).concat("/wd/hub")), capability); 

    } 
    @Test 
    public void testThis() throws InterruptedException { 
     String url="https://www.google.com"; 
     driver.get(url); 
     driver.manage().window().maximize(); 
     //do something 
     driver.close(); 
    } 

} 
+0

感謝Vishal Jagtap,U在同一臺機器或兩臺不同的機器上創建了節點chrome和節點firefox?我跟着你的代碼,但我收到以下錯誤「參數'瀏覽器'是由@Configuration在方法初始化時需要的,但尚未標記或定義」 –

+0

我已經在本地機器上創建了兩個節點。如果您想要在遠程計算機上創建一個連接到本地計算機上的集線器的節點,請在遠程計算機上使用以下命令行 - java -jar selenium-server-standalone-2.32.0.jar -role webdriver -hub http: //192.12.13.1:4444/grid/register -port 8585 here 192.12.13.1是集線器正在運行的機器的IP地址。確保您的遠程機器可以通信/訪問您的本地機器 –

+0

此外,有關錯誤「參數'瀏覽器'是@Configuration在方法初始化時需要的,但尚未標記或定義」 - 請確保您的名稱'browser'拼寫正確並在xml文件和你的測試用例中提到。 –

0
  1. 我不知道你使用的是什麼框架。我使用「testng」框架進行了並行執行。
  2. 對於使用testng,您必須在您的項目構建路徑中添加testng jar文件,或者如果您使用IDE如eclipse add testng插件。
  3. 然後用適當的註釋(即@test)創建你的類。
  4. 創建testNG.xml文件並進行配置(確保你提到parallel = 2,count 2只是你想要並行執行多少測試)
  5. 然後右鍵單擊xml文件並單擊runas testNG ..

參見:

  1. testng-executing-parallel-tests

  2. parallel-execution-of-test-methods-in-testng

+0

迪內希,感謝您reply.I要對兩個測試運行不同的機器。你說的並行是,在同一臺機器上運行不同的測試用例。但我想在node1中運行firefox中的測試用例,在node2中運行我的測試用例,在IE3中運行我的測試用例。 –

+0

Here Node意思是不同的機器 –

相關問題