2016-10-03 12 views
1

これはよくある質問ですが、私はインターネットやStackOverflowで見つかった答えには不明です。オブジェクトインスタンシエーション - Selenium Webドライバ

我々は(セレンwebdriverをとJavaを言う)セレンWebDriverでオブジェクトをインスタンス化するとき、我々は一般的に(通常の慣行のように)書き込み、

WebDriver driver = new FirefoxDriver(); 

それともWebDriverインターフェース(クローム、IEの他の実装を使用し、 Safari、AndroidDriverなど)。

我々はインターフェイスであること

FirefoxDriver fx = new FirefoxDriver(); 

webdriverを以下のようなものを使用していないのはなぜ、特定のブラウザの実装クラスによって実装されているWebDriverの唯一の方法は、アクセス可能になります。例えばFireFoxDriverWebDriverインターフェイスにはないメソッドは、参照によってアクセスできません。

私が間違っている場合は、私に修正してください。

答えて

1

実装の代わりにインターフェイスWebDriverを使用する必要があります。これは一般的な名前のテクニックです。将来的にはあなたが別のドライバに切り替える必要があればインターフェイスに

コード/プログラミング

ので、のはChromeDriverからFirefoxDriverあなたのコードにスイッチを言うようになります無傷のまま。

+0

答えをありがとう、私はそのOOの原則の1つだと思います。 Googleでより多くの例を検索しました。より明確になった。 –

2

WebDriverには、テストに必要なすべての方法が含まれているので、常にに電話する必要があります。ここ

は一例であり:

は静的webdriverをドライバ=新しいChromeDriver(保護)。

又は

保護静的webdriverをドライバ=新しいFirefoxDriver()。

+0

申し訳ありませんが、私の疑問はまだ不明です。実装クラスのWebDriverとObjectへの参照を作成します。 WebDriverリファレンスを使用して、最終的に実装クラスのメソッドを使用します(ポリモーフィズムのおかげで)。 WebDriverインターフェイスのメソッドは、最後に使用されるさまざまなブラウザ実装クラスで実装されます。最終的に、両方のステートメントは、実装クラスのメソッドを使用するようにします。私の理解が間違っていれば私を修正してください。 –

関連する問題