4

多くの同時 PhantomJS インスタンスを持つノードを追加するのに苦労しています。GhostDriver github ページでは、1 つのノードを PhantomJS の 1 つのインスタンスのみに登録する手順を見つけることができます。

phantomjs --webdriver=8080 --webdriver-selenium-grid-hub=http://127.0.0.1:4444

画像を投稿することは許可されていないため、次の方法でノードを追加した後のグリッド ビューを次に示します。 ここに画像の説明を入力

構成タブの内容は次のとおりです。

port:6666
servlets:[]
host:null
cleanUpCycle:5000
browserTimeout:0
hubHost:127.0.0.1
registerCycle:5000
hub:http://127.0.0.1:4444/grid/register/
capabilityMatcher:org.openqa.grid.internal.utils.DefaultCapabilityMatcher
newSessionWaitTimeout:-1
url:http://127.0.0.1:6666
remoteHost:http://127.0.0.1:6666
prioritizer:null
register:true
throwOnCapabilityNotPresent:true
nodePolling:5000
proxy:org.openqa.grid.selenium.proxy.DefaultRemoteProxy
maxSession:1
role:wd
jettyMaxThreads:-1
hubPort:4444
timeout:300000

Selenium グリッドではコマンド ラインからノード ブラウザーを定義できるため、phantomjs で実行しようとしましたが、ここでわかるように、サポートされていません。

-browser に使用できるパラメータ: browserName={android、chrome、firefox、htmlunit、Internet Explorer、iphone、opera} version={ブラウザのバージョン} firefox_binary={実行可能バイナリへのパス} chrome_binary={実行可能バイナリへのパス} maxInstances={最大このタイプのブラウザの数} platform={WINDOWS, LINUX, MAC}

4

2 に答える 2

4

同じ問題に苦労しています: 次のアーキテクチャ (下の画面) を実装する予定です: 建築

しかし、私は次の問題に直面しています: 1) 次のパラメーターを使用して selenium-server- を構成する場合 (実行の UI 方法、つまり ffox、chrome、または IE のいずれかで構成) のように

java -jar  selenium-server-standalone-2.41.0.jar -role node -hub htt
p://localhost:4444/grid/register -port 7575 -browser  browserName=firefox,maxIns
tances=5,platform=WINDOWS

次に、必要な結果を取得ます

ただし、たとえば、phantomJs 上の GhostDriver の場合、selenium-server-.jar ではなく、-browser パラメーターをサポートしない phantomjs.exe アプリを起動することが期待されます: 不明なパラメーター 不明なパラメーター 2

許可された phantomjs パラメーターのリストに従って 、firefox の 5 つの同時インスタンスと比較して、1 つのファントム jsInstance しか起動できませんでした。

おそらくそれはあなたを助けるかもしれません-今、私はテストアーキテクチャを再編成しており、次のように調整しようとしています: 1 NODE = 1 PhantomJs インスタンス。 再編成されたテスト アーキテクチャ

ローカルホストでは、さまざまなポートで多くのノード (IE、Ffox、Chrome) を実行できます: http://gyazo.com/302fab9b6722251aa2cc6d98e2522931


この解決策は私のために働いた:

  • プロジェクト構造についてのいくつかの言葉: 私は Linux マシン (192.34.61.205、セレン ハブはここで実行されています) とそれに関連する ~20 の phantomJs ノードを持っています: http://gyazo.com/0a3a50f2ee1638d10b1766e300438891 すべてのノードで phantomJs はサービスとして実行されています (ノードでphantomJsを再起動するには、コマンドを入力するだけです sudo service phantomjs restart)

一部のノードには次の IP があります: 162.243.175.134 162.243.175.97 162.243.175.252 ....

public class BrowserOneInstance extends BaseMethodsForMultipleBrowsers {

    private WebDriver driver;

    private final static Logger log = LoggerFactory.getLogger(BrowserOneInstance.class);
    public static LoginPage loginPage;
    public static FacebookUserPage homePage;

    FileOperations fileManipulator = new FileOperations();


//staring   hub - nodes model (on local WIN machine) over GhostDriver- pHantomJS

    @BeforeClass
    public void seleniumGrridUponGhostDriver() throws MalformedURLException {


//        File phantomjs = Phanbedder.unpack(); //Phanbedder to the rescue!

        File phantomjs = new File(System.getProperty("java.io.tmpdir")+File.separator+"phantomjs-1.9.7");


        DesiredCapabilities dcaps = new DesiredCapabilities();
        dcaps.setCapability("takesScreenshot", true);


        dcaps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, phantomjs.getAbsolutePath());

// !!!!! hardCoded initizliations of GhostDriver node
//        driver = new RemoteWebDriver(new URL("http://localhost:8080"), dcaps);

//    driver initialization   using  method  providing IP of running Ghost node connected to running hub
//        this.driver= new RemoteWebDriver(new URL("http://"+getGhostNodesIp()+":8080"),dcaps);

//        node  connected to linux hub:
        this.driver = new RemoteWebDriver(new URL("http://162.243.175.134:8080"), dcaps);


        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);

        //page instances init()
        loginPage = PageFactory.initElements(driver, LoginPage.class);
        homePage = PageFactory.initElements(driver, FacebookUserPage.class);
    }

      @Test
 public void abracadabraTestMethod(){

  ....
 }


        @AfterTest
    public void driverTearDown() {
//        close any of the instances: either Firefox or GhostDriver
        driver.quit();
    }

}

ノート:

phantomJs をクロスプラットフォームの方法で動作させて手動置換を排除したい場合は、Phanbedder - PhantomJS Windows/Mac OS X/Linux ネイティブ バイナリ エンベダーを使用できます。

import net.anthavio.phanbedder.Phanbedder;

......

 @BeforeClass
    public void seleniumGrridUponGhostDriver() throws MalformedURLException {

        File phantomjs = Phanbedder.unpack(); //Phanbedder to the rescue!


        DesiredCapabilities dcaps = new DesiredCapabilities();
        dcaps.setCapability("takesScreenshot", true);


        dcaps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, phantomjs.getAbsolutePath());


        this.driver = new RemoteWebDriver(new URL("http://162.243.175.134:8080"), dcaps);

......

これがうまくいくことを願っています。

于 2014-06-01T11:20:28.190 に答える