1

MSTestクラスでSeleniumGrid2とRemoteWebDriverを使用して、OperaDriverを機能させるのに苦労しています。

CMDで次のコマンドを実行して、SeleniumハブとOperaノードを作成します。

start java -jar selenium-server-standalone-2.30.0.jar -role hub
start java -jar selenium-server-standalone-2.30.0.jar -role node -port 7001 -browser "browserName=opera,version=11.62,maxInstances=5,platform=WINDOWS" -hub http://localhost:4444/grid/register

これは正常に機能します。ブラウザでハブを表示すると、登録済みのノードを確認できます。

WebDriverしかし、C#テストクラスで新しいものを作成しようとすると、例外が発生します。

DesiredCapabilities operaCapabilities = DesiredCapabilities.Opera();
operaCapabilities.SetCapability(CapabilityType.BrowserName, "opera");
operaCapabilities.SetCapability(CapabilityType.Platform, "WINDOWS");
operaCapabilities.SetCapability(CapabilityType.Version, "11.62");
operaCapabilities.SetCapability("opera.binary", "C:\\Program Files\\Opera\\opera.exe");
operaCapabilities.SetCapability("opera.port", 7001);
RemoteWebDriver operaDriver = new RemoteWebDriver(operaCapabilities);

実際、2つの異なる例外が発生します。Seleniumでハブとノードを作成した後、初めて次のようになります。

バンドルされたランチャーをサポートするプラットフォームが見つかりませんでした。手動で設定してください

ビルド情報:バージョン: '2.30.0'、リビジョン:'dc1ef9c'、時間: '2013-02-19 00:15:27'

システム情報:os.name:'Windows 8'、os.arch:'x86'、os.version: '6.2'、java.version: '1.7.0_15'

ドライバー情報:driver.version:OperaDriver

その後、毎回次のエラーが発生します。

クラスcom.opera.core.systems.runner.launcher.OperaLauncherRunnerを初期化できませんでした

私はを使用してSelenium-standalone-2.30.0います。

Operaバージョン12.14を使用していましたが、OperaDriver wikiページで互換性のあるバージョンのリストを確認した後、11.62にダウングレードしましたが、エラーは同じままです。

上記の機能がある場合とない場合でRemoteWebDriverを初期化しようとしましたが、毎回同じ結果が得られます。

ここでの問題と、RemoteWebDriverをOperaでこのように動作させる方法を知っている人はいますか?

編集:ブラウザを開いて表示したときのように読み取り、バージョンが読み取らOpera version 12.14れるプラットフォームである可能性がありますか?私はノードとのようにプラットフォームを指定しているので。RemoteWebDriverのプラットフォームとしてWINDOWS8を指定しようとすると、一致する列挙型が見つからない場合に新しい例外がスローされます。'WINDOWS 8'11.62"WIN32"OperaHelp => AboutWINDOWSRemoteWebDriver

org.openqa.selenium.WebDriverException:java.lang.IllegalArgumentException:列挙型定数がありませんorg.openqa.selenium.Platform.WINDOWS 8

Edit2 :実行しているのに、何らかの理由CurrentPlatformで戻ってきました。VistaWindows8

Platform platform = Platform.CurrentPlatform;

OperaDriverまた、ソースコードが大文字の「VISTA」をチェックするのに対し、C#のプラットフォームは「Vista」と表示されることにも気づきました。

これが問題の原因である可能性がありますか?

4

2 に答える 2

3

私もこの問題に苦しんでおり、eviltester からのヒントのおかげで、次のコマンド ラインを使用してセレン サーバーを起動することで問題を解決できました。

java -Dos.name=windows -jar selenium-server-standalone-2.32.0.jar

の使用は-Dos.name=windowsと同等でSystem.setProperty("os.name", "windows")あり、C# selenium コードを Opera ブラウザで動作させることができます。

于 2013-04-22T20:44:41.473 に答える
1

Javaで実行しているときにこれを見ました。デバッグ モードでは、OperaLauncherRunner.java launcherNameForOS が Platform.getCurrent() によって返される WIN8 列挙型に対応していない可能性があるように見えました。

Java では、新しい OperaDriver を作成する前に、システム プロパティ「os.name」を「windows」に設定してごまかしました。これにより、Platform.getCurrent は Opera ランチャーが満足する XP を返さなければなりませんでした。

したがって、Javaでは、このハックを使用しました:

System.setProperty("os.name","windows");
driver = new OperaDriver();
于 2013-04-17T14:22:07.110 に答える