2017-06-29 7 views
0

セレンのグリッドで特定のブラウザでテストを実行したいと考えています。セレンのグリッドで利用可能な特定のブラウザのスロット数を取得するAPIはありますか?

私はすべてのブラウザを含むすべての利用可能なスロットの合計であるslotcountを得ることができる既存のAPIを見てきました。

例:curl -X GET http://localhost:4444/grid/api/hub/ -d '{"configuration":["slotCounts"]}'

出力は次のようになります。{"success":true,"slotCounts":{"free":178,"total":196}}

利用できるChromeブラウザ(例えば)のスロット数を取得することが可能な任意のAPIはありますか?

その他のオプションは、私の心に来て、既存のAPIはありません

<img src='/grid/resources/org/openqa/grid/images/chrome.png' width='16' height='16' class='busy' title='POST - /session/8802ebae-10cb-480d-bbbd-5e7edd7ee7b2/execute executed.' /> 

答えて

1

ようなもので、私はHTML構造を解析する必要がフルスタックを、返す

curl -X GET http://localhost:4444/grid/console 

を解析することです現在のところ、Selenium Gridには、このためのAPIが用意されていません。

呼び出されたときにこの情報を抽出して提供できるカスタムサーブレットを作成する必要があります。

あなたのハブサーブレットは、次のようになります。

import org.openqa.grid.internal.ProxySet; 
import org.openqa.grid.internal.Registry; 
import org.openqa.grid.internal.RemoteProxy; 
import org.openqa.grid.web.servlet.RegistryBasedServlet; 
import org.openqa.selenium.remote.CapabilityType; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.Iterator; 
import java.util.List; 
import java.util.Map; 

public class SimpleServlet extends RegistryBasedServlet { 
    public SimpleServlet(Registry registry) { 
     super(registry); 
    } 

    @Override 
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     ProxySet proxySet = getRegistry().getAllProxies(); 
     Iterator<RemoteProxy> iterator = proxySet.iterator(); 
     Map<String, List<String>> returnValue = new HashMap<>(); 
     while (iterator.hasNext()) { 
      RemoteProxy each = iterator.next(); 
      each.getTestSlots().forEach(slot -> { 
       String browser = (String) slot.getCapabilities().get(CapabilityType.BROWSER_NAME); 
       String machineIp = each.getRemoteHost().getHost(); 
       List<String> machines = returnValue.get(browser); 
       if (machines == null) { 
        machines = new ArrayList<>(); 
       } 
       machines.add(machineIp); 
       returnValue.put(browser, machines); 
      }); 
     } 
     //Write logic to have the Map returned back as perhaps a JSON payload 
    } 
} 

あなたは、ハブまたはノードにサーブレットを注入する方法については、Seleniumのドキュメントhereを参照することができます。

+0

ありがとう@Krishnan、現在、私たちはこの情報を得るためのAPIを作成しています。このような情報を返すのは、 '' AvailableFirefox ":84、" TotalFirefox ":84、" AvailableChrome ":84、" TotalChrome ":84、" AvailableInternetExplorer ":28、" TotalInternetExplorer ":28}'サーブレットとしてすぐに作成することでこれをチェックします –

+0

私の答えが役に立ったら、それを受け入れるようにしてください。 –

関連する問題