2016-02-07 33 views
7

テストケースがあり、ブラウザ名(IEまたはChrome)に基づいて実行する必要があります。このテストケースでは、ブラウザの種類によって一部が異なります。JavaでSelenium WebDriverを使用してブラウザ名を取得する方法は?

実行の間にどのようにブラウザ名を取得しますか? IEの場合は、データを渡す必要があります。 Chromeブラウザの場合は、データを選択する必要があります。

答えて

13

: -

Capabilities cap = ((RemoteWebDriver) driver).getCapabilities(); 
    String browserName = cap.getBrowserName().toLowerCase(); 
    System.out.println(browserName); 
    String os = cap.getPlatform().toString(); 
    System.out.println(os); 
    String v = cap.getVersion().toString(); 
    System.out.println(v); 

あなたは

import org.openqa.selenium.Capabilities; 
import org.openqa.selenium.remote.RemoteWebDriver; 

をインポートする必要があるパッケージが、それはあなたを助けることを願っています:)

+0

OPが(1つ以上の) 'driver'インスタンスを持っていた場合、なぜその名前を解決するコードが必要なのでしょうか?最初はインスタンスがどこから来るのでしょうか? –

+0

OPは、バージョンとブラウザを知る必要のあるテストケースでこのコードを使用できます。 OPはドライバのインスタンス名を変更できます。私はOPが求めていることに答えました。 –

+0

それは私には意味がありませんが、OPの選択です。 –

2

あなたはテスターですから、コード/スクリプトをに明示的に書いてください。さまざまなブラウザ/バージョンの組み合わせとそれぞれのニュアンスと微妙な点をテストします(できるだけ多くのロジックを再利用しようとします、重複を最小限に抑えるなど)

WebDriverの性質はです。テスターのは、ブラウザではなく運転しています。物事を検出しようとしないでください。

ですから、IE用とChromeのために異なる動作を持っていることを考えると、あなたは明示的に(異なる@Test秒)ごとに、WebDriverインスタンスを作成する必要がありますし、必要に応じて必要なデータ(同様の性質、Capabilitiesなど)を設定します。

すべての手段でテスト間で共通のルックアップコードを共有しますが、テストが堅牢で機能するまでは、リファクタリングを試みるべきではありません。

あなたはブラウザ名、バージョン、OSの詳細を知るために、コードの下に使用することができます
+1

あなたはポイントがありますが、IMHOではテストが自動的に別のブラウザに適応する方が良い場合があります。たとえば、テストはさまざまなブラウザに対して手動で(半)実行されます。特定の要素と対話するときに、1つのブラウザにSeleniumバグの回避策が必要です。これらのケースでは、別々のテストをしたくないので、ブラウザ間で動作する1つのテストが必要です。 – sleske

関連する問題