4

セレニウムグリッド2でのセレンテストで使用するプログラムを一時的に作成しようとしています。Selenium Grid2でRemoteWebDriverとFireFoxProfileを使用すると、Capabilities例外が発生する

ここに私が現在実行しているコードがあります。

DesiredCapabilities capabilities = new DesiredCapabilities(); 
capabilities.setBrowserName("firefox"); 
FirefoxProfile profile = new FirefoxProfile(); 
profile.setPreference(PREFERENCE_NAME,userAgent.getUserAgentString()); 
capabilities.setCapability(FirefoxDriver.PROFILE,profile); 
RemoteWebDriver driver = new RemoteWebDriver(url, capabilities); 

このコードは、プロファイルに関するすべての行がコメントアウトされている場合に実行されます。しかし、そのままでは、この例外が発生します。

Caused by: org.openqa.selenium.WebDriverException: Error forwarding the new session cannot find : Capabilities [{browserName=firefox, version=, platform=ANY, firefox_profile=UEsDBBQACAgIAFxzBEkAAAAAAAAAA...}] 

私は例外が、セレンのサーバーで一致する機能の設定を見つけることができないと言っていることを理解しています。しかし、それは一致するものを探すのではなく、プロファイルを転送する必要があります。そして "firefox_profile ="の後の文字列は "profile.toJson()"の出力ですので、ある程度正確に処理しているようです。なぜサーバーがそれを受け入れないのか分かりません。ここで

は私のセレンサーバーの起動スクリプト

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=6565 -cp selenium-server-standalone-2.53.0.jar org.openqa.grid.selenium.GridLauncher -role node -nodeConfig nodeconfig.json -hub http://192.168.5.151:4444/grid/register 

そして、私はこの多くを研究しているし、何かを見つけることができませんでした

{ 
"capabilities": [ 
    { 
    "browserName": "firefox", 
    "nativeEvents": true, 
    "acceptSslCerts": true, 
    "javascriptEnabled": true, 
    "takesScreenshot": true, 
    "firefox_profile": "selenium", 
    "version": "44.0", 
    "platform": "WIN10", 
    "maxInstances": 1, 
    "firefox_binary": "C:\\Program Files\\Mozilla\ Firefox\\firefox.exe", 
    "cleanSession": true, 
    "file.download.supported": true, 
    "file.download.watcher": "WindowsFirefoxDownloadWatcher", 
    "file.download.directory": "C:\\Users\\IEUser\\Downloads" 
    }, 
    { 
    "browserName": "chrome", 
    "nativeEvents": true, 
    "maxInstances": 1, 
    "platform": "WIN10", 
    "webdriver.chrome.driver": "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe" 
    }, 
    { 
    "browserName": "MicrosoftEdge", 
    "nativeEvents": true, 
    "maxInstances": 1, 
    "platform": "WIN10" 
    } 
], 

"configuration": 
    { 
    "_comment" : "Windows 10 with file download support", 
    "cleanUpCycle": 2000, 
    "timeout": 0, 
    "port": 5555, 
    "host": ip, 
    "register": true, 
    "hubPort": 4444, 
    "maxSessions": 1, 
    "Dwebdriver.edge.driver=C:\\Program Files (x86)\\Microsoft Web Driver\\MicrosoftWebDriver.exe": "" 
    } 
} 

ノードの設定ファイル/類似したとのだれでもあります問題。プロファイルをvmで直接作成し、起動スクリプトで指定することでプロファイルを選択できました。しかし、それは私が探している機能ではありません。

ご協力いただければ幸いです!ありがとうございました!新しいセッション転送

+0

なぜあなたのプロファイルをグリッドに転送する必要があると思いますか? –

答えて

1

エラーを見つけることができません。機能を[{browserName = Firefoxのバージョン=、プラットフォーム= ANY、これは基本的にあなたが割り当てるためにグリッドを要求したことを伝えるのグリッドの方法です

(プラットフォームの風味やバージョン番号に関係なく)firefoxを実行できるノードですが、グリッドにはそのようなノードはありません(ノード設定のJSONファイルでは、firefox_profileのキーに値"セレン"。

"firefox_profile": "selenium"

JSON設定ファイルでこのキーを設定する理由がわかりません。

私は、例外は、セレンのサーバー上で一致する機能の設定を見つけることができないと言っていることを理解します。しかし、それは一致するものを探すのではなく、プロファイルを転送する必要があります。

グリッドは、要求された機能に一致するノードが見つかった場合にのみ実行します。あなたの場合、グリッドはあなたが要求しているものと一致するノードを見つけることができないので、プロファイルは転送されません(この時点で宛先が不明なため)。

node_config JSONファイルからキー "firefox_profile"を削除する必要があります。その後、firefoxプロファイルが該当する特定のノードに転送され、作成されたfirefoxプロファイルを使用して実行が開始されます。

関連する問題