私はOOPの第一人者ではないですし、多分そこに私はなっておりませんことをより深い何かがあるが、ここで私をたくさん気になるものです:webdriverをナンセンス
私はSelenium WebDriver
ため、なぜすべての例とチュートリアルいかなる理由が表示されませんWebDriver
オブジェクト、たとえば使用している:上記の例で
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com/");
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
を、我々はTakesScreenshot
にWebDriver
をキャストするためのより多くのコードを追加する必要があります。
FirefoxDriver driver = new FirefoxDriver();
driver.get("http://www.google.com/");
File scrFile = driver.getScreenshotAs(OutputType.FILE);
(GhostDriverを除く)すべてのドライバオブジェクトは、ほかに+最終的にいくつかのより多くのALL WebDriver
のメソッドを実装します。私たちは直接FirefoxDriver
オブジェクトを使用することができるときなぜこれを行います。したがって、基本的には、WebDriver
インターフェイスを間接的に実装するため(から継承し、すべてのドライバがWebDriver
インターフェイスを実装しているため)、またはChromeDriver
いずれかのオブジェクトが必要です。
したがって、実際のドライバをWebDriver
として作成するのではなく、鋳造などでコードを複雑にするのはなぜですか?
FirefoxDriver
(たとえば)の代わりにWebDriver
を使用するほうがよい場合は、実際の例を教えてください。
これは、基本的には、なぜインタフェースを使用すべきかということに根ざしています。あなたの具体的な例ではそれほど意味をなさないかもしれませんが、再構築しなくても実際にどのドライバを使用するかを設定したいと思っています。設定されているものを返す 'WebDriver getConfiguredDriver()'のようなメソッドを持つ 'DriverProvider'クラスがあります。次に、何か「WebDriver driver = DriverProvider.getConfiguredDriver();」を実行して完了します。あとで 'SafariDriver'を追加したいのであれば、別の設定を追加するだけですが、残りのコードを変更する必要はありません。 – Thomas
"FirefoxDriver(たとえば)の代わりにWebDriverを使用するほうがよい場合は、実際の例を教えてください。 firefoxとchromeで同じテストを実行したいとき。 –
@トーマス私はあなたのポイントを参照してください。結論は:単純な簡単なスクリプト/プログラムを使用する場合は、インターフェイスに対してコーディングする必要はありませんが、Seleniumを使用してフレームワークを構築する場合、インターフェイスに対してコードを作成する必要があります。同意しますか? – CuriousGuy