2014-12-04 57 views
0

目前,我正在設置Selenium Grid以在集線器上運行測試套件並在節點上分發這些測試。Selenium Grid 2:本地集線器和2個本地節點

這個想法是讓測試在集線器上執行並分佈在10個節點上以進一步執行它們。對於初學者和評估網格,我建立了一個本地中心和2個本地節點。

在我的測試類中,我有4個測試,使用RemoteDriver運行測試並將集線器作爲URL和配置的功能傳遞,它會在Node1上執行所有四個測試,並且不會將其分發到Node2。另外,它在Node1上連續運行所有4個測試。有人知道這裏可能是錯的嗎?請找到下面的設置。

集線器配置:

C:\Proto\Selserversidedjars>java 
    -jar selenium-server-standalone-2.44.0.jar 
    -role hub -hubConfig DefaultHub.json 

節點1種配置:

C:\Proto\Selserversidedjars>java 
    -jar selenium-server-standalone-2.44.0.jar 
    -role node 
    -hub http://localhost:4444/grid/register 

節點2配置:

C:\Proto\Selserversidedjars>java 
    -jar selenium-server-standalone-2.44.0.jar 
    -role node 
    -nodeConfig DefaultNode1.json 
    -port 6666 

Defaulthub.json:

{ 
    "host": null, 
    "port": 4444, 
    "newSessionWaitTimeout": -1, 
    "servlets" : [], 
    "prioritizer": null, 
    "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher", 
    "throwOnCapabilityNotPresent": true, 
    "nodePolling": 5000, 

    "cleanUpCycle": 5000, 
    "timeout": 300000, 
    "browserTimeout": 0, 
    "maxSession": 5, 
    "jettyMaxThreads":-1 
} 

DefaultNode1.json:

{ 
    "capabilities": 
     [ 
     { 
      "browserName": "*firefox", 
      "maxInstances": 5, 
      "seleniumProtocol": "Selenium" 
     }, 
     { 
      "browserName": "*googlechrome", 
      "maxInstances": 5, 
      "seleniumProtocol": "Selenium" 
     }, 
     { 
      "browserName": "*iexplore", 
      "maxInstances": 1, 
      "seleniumProtocol": "Selenium" 
     }, 
     { 
      "browserName": "firefox", 
      "maxInstances": 5, 
      "seleniumProtocol": "WebDriver" 
     }, 
     { 
      "browserName": "chrome", 
      "maxInstances": 5, 
      "seleniumProtocol": "WebDriver" 
     }, 
     { 
      "browserName": "internet explorer", 
      "maxInstances": 1, 
      "seleniumProtocol": "WebDriver" 
     } 
     ], 
    "configuration": 
    { 
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy", 
    "maxSession": 5, 
    "port": 6666, 
    "host": ip, 
    "register": true, 
    "registerCycle": 5000, 
    "hubPort": 4444, 
    "hubHost": ip 
    } 
} 

這些配置設置之後,現在,我的輪轂上啓動4444端口,節點1在5555開始,節點2在6666在我的TestNG進行啓動,我想執行4個測試。鑑於我有多個測試在單個類中運行,是否可以將這些測試分佈在單個節點上的多個節點或多個實例上?

任何有關「如何在Node1上執行多個實例並在這種情況下向Node2分發測試(假設超過10個測試)」的幫助,我們將不勝感激。

在此先感謝!

回答

0

連續或平行運行取決於你如何觸發你的測試,只是不使用網格自動發生。網格只是幫助在各種節點上分發測試 - 如果測試是串行發送的,它將串行分發,如果並行發送,它將分發到各個節點上。

您可能會考慮使用TestNG來並行運行測試,或者您可以冒險實現自己的並行性。

你提到你的單個類有多個測試 - 使用testng,你可以將parallel屬性設置爲將觸發單個線程中的每個測試的方法,這些測試將被髮送到網格,並且集線器將負責提取一個免費節點並執行測試。

注意編寫線程安全驅動程序啓動代碼,以便每個線程都有自己的驅動程序實例。

+0

感謝您的快速回復!你能解釋一下threadsafe驅動啓動代碼嗎? – startedFromTheBottom 2014-12-05 22:01:13

+0

測試套件中使用parallel =「tests」vs parallel =「methods」的區別是什麼?我們在每個測試類中都有方法和方法之後有多個測試。 – startedFromTheBottom 2014-12-16 03:50:58

+0

請提出新問題,而不是在評論中 - 幫助人們搜索答案。測試代表xml中的標記,它可以包含任意數量的類,方法等。方法是每個@Test方法 – 2014-12-16 06:12:38