0

Selenium Gridを使用して特定のバージョンのIEでノードを登録しようとしたときに問題が発生しました。私のセットアップ:C#バインディングとSelenium Grid - IEのバージョン指定時に機能が見つからない

  • セレン3.0.1
  • 私のページオブジェクト/フレームワークと私のNUnit 3.5のテスト
  • 一つVMデータベースをホストServer 2008を実行しているし、私と1つのクラスライブラリを定義する1つのクラスライブラリセレングリッドハブは、 "javaの-jar C:\セレン\セレンサーバスタンドアロン-3.0.1.jar -roleハブ-maxSession 20" で始まっ
  • 一つのVMが私のwebdriverをノードとIE9でWindows 7を実行している

私のノードwiを起動します。目(読みやすくするために私が追加した改行、それはbatファイルに1行です):

java -Dwebdriver.ie.driver=C:\Selenium\IEDriverServer.exe -Dwebdriver.chrome.driver=C:\Selenium\chromedriver.exe -jar C:\Selenium\selenium-server-standalone-3.0.1.jar -role webdriver -hub http://10.10.1.20:4444/grid/register -port 5566 -maxSession 20 
-browser "browserName=internet explorer,version=9,maxInstances=1,platform=ANY,seleniumProtocol=WebDriver" 
-browser "browserName=chrome,maxInstances=5" 
-browser "browserName=firefox,maxInstances=5" 

RemoteWebDriverを呼び出すために私のコードは次のとおりです。

caps = new DesiredCapabilities(); 
caps.SetCapability("browserName", "internet explorer"); 
caps.SetCapability("version", "9"); 
WebDriver = new RemoteWebDriver(new System.Uri("http://10.10.1.20:4444/wd/hub"), caps); 

私はこのコードを実行すると、コードが作成するときに新しいRemoteWebDriverハブリターン:

INFO - Got a request to create a new session: Capabilities [{browserName=internet explorer, version=9}] 

Visual Studioは、次のエラーが返さ示しています

System.InvalidOperationException : Error forwarding the new session cannot find : Capabilities [{browserName=internet explorer, version=9}] TearDown : System.NullReferenceException : Object reference not set to an instance of an object. 

私はノードと私のコードを "9"ではなく "9.0"を使用し、 "Internet Explorer"ではなく "iexplore"に設定しようとしましたが、成功。 GoogleとSeleniumのドキュメントを2時間かけて掘り下げたが、さまざまなブラウザの "バージョン"機能に期待されているフォーマットを列挙している人はいないようだから、正しい値。ノードの起動バッチからバージョンフラグを削除し、C#コードでsetCapabilityを呼び出すと、ブラウザが正常に起動します。しかし、私はテストのための複数のIEの変形とグリッドを持っているし、私が望むIEのバージョンを指定できるようにする必要があります。誰でも正しい方法でIEの特定のバージョンのノードを起動し、そのノードをハブに登録し、RemoteWebDriverで呼び出すことができますか?

答えて

0

解決策が見つかりました - コマンドライン引数を使用してIEのバージョン固有のインスタンスを取得できませんでしたが、JSONベースの構成を使用してこれを実行できました。私は今使用して、私のセレングリッドノードを起動し、次の

javaの-Dwebdriver.ie.driver = C:\ SeleniumGrid \ IEDriverServer.exe -Dwebdriver.chrome.driver = C:\ SeleniumGrid \ chromedriver.exe -jar C:\ SeleniumGrid \セレンサーバスタンドアロン-3.0.1.jar -role webdriverを-nodeConfig "C:\ SeleniumGrid \ NodeIE9.json"

そして、私のNodeIE9.jsonファイルには、次のものが含まれています

{ 
    "capabilities": 
    [ 

    { 
     "browserName": "firefox", 
     "maxInstances": 5, 
     "seleniumProtocol": "WebDriver" 
    }, 
    { 
     "browserName": "chrome", 
     "maxInstances": 5, 
     "seleniumProtocol": "WebDriver" 
    }, 
    { 
     "browserName": "internet explorer", 
     "version": "9", 
     "maxInstances": 1, 
     "seleniumProtocol": "WebDriver" 
    } 
    ], 
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy", 
    "maxSession": 11, 
    "port": 5555, 
    "register": true, 
    "registerCycle": 5000, 
    "hub": "http://10.10.1.20:4444", 
    "nodeStatusCheckTimeout": 5000, 
    "nodePolling": 5000, 
    "role": "node", 
    "unregisterIfStillDownAfter": 60000, 
    "downPollingLimit": 2, 
    "debug": false, 
    "servlets" : [], 
    "withoutServlets": [], 
    "custom": {} 
} 

私は、「バージョン」プロパティが必要であると述べたどこかの提案を見ました文字列でJSONのintではないので、コマンドラインで渡された引数が正しく解釈されていない可能性があります。いずれにしても、これは非常にうまく動作し、JSONをコマンドラインで使用してノードを構成することをお勧めします。清潔です。

関連する問題