Grid2 で SafariDriver を使用して Safari を新しい方法で使用することについて質問がある場合、これは私が信じている典型的な方法です (多かれ少なかれ):
import org.openqa.selenium.*;
import org.openqa.selenium.remote.*;
import java.net.*;
DesiredCapabilities c = new DesiredCapabilities();
c.setBrowserName("safari");
/* you can then set version & platform as well, but the minimum is just browser. Maybe for Grid2 you need the others, but for remote web driver only, you don't.
*/
WebDriver d = new RemoteWebDriver(new URL("http://hubIpOrHostname:hubPort/wd/hub"),c);
そしてそれはうまくいくはずです。サーバー側では、wikiドキュメントに従ってGrid2のインスタンスを正常に作成するだけだと思います(最後に確認したところ、現在は差分になっている可能性があります):
//ハブ java -jar selenium-server-standalone-2.21.0.jar -role ハブ -ポート theHubPort を開始します
// ノードを開始します java -jar selenium-server-standalone-2.21.0.jar -role node -hub http: //172.22.6.198:4446/wd/hub -port theNodePort
ただし、現在の Grid2 は Safari をサポートしていないようです。ハブに登録されているノードのコンソールを調べたところ、Safari のアイコンが表示されませんでした。多分私は何かを逃した。次回はプラットフォームとバージョンを追加して、それが違いを生むかどうかを確認しますが、そうではないと思います.
SafariDriver を使用した Grid2 で発生したエラーのスニペットを次に示します。
2012 年 5 月 11 日 6:01:11 PM org.openqa.selenium.remote.RemoteWebDriver execute INFO: Executing: [null, newSession {"desiredCapabilities":"Capabilities [{browserName=safari}]"}] // エラー: // キャッチされない例外: 型付き変数の宣言 : オブジェクト コンストラクター : 行: 7 : ファイル内: : new RemoteWebDriver ( new URL ( "http: //172.22.6.198:4446/wd/hub" ) , c )
ターゲット例外: org.openqa.selenium.WebDriverException: 新しいセッションの転送中にエラーが見つかりません: {browserName=safari} コマンドの実行時間またはタイムアウト: 109 ミリ秒
注: webdriver では、同じコードを (スタンドアロン) リモート webdriver 実行とグリッドに使用できます。相違点は、リモートではリモート サーバー IP を使用し、grid2 ではハブ IP を使用することです。SafariDriver はリモート Web ドライバーで動作しますが、現在 Grid2 ではまだ動作していないようです。
リモート Web ドライバーの起動:
java -jar selenum-server-standalone-2.21.0.jar [-port somePort] //デフォルトのポート 4444