私は初めてセレンを試していますが、簡単な質問があります。click()
でメソッドを呼び出すと、タイプメソッドWebElement
であることに気付きました。void
ではHtmlUnitDriver
、発生後にレンダリングされる更新されたページを保持しますclick()
か?
2 に答える
はい。インターフェイスはブラウザを制御していますが、ほとんどの作業を実行し、ページの状態などを記憶しているのはブラウザ(このWebDriver
場合はHtmlUnit)です。
したがって、それWebDriver
自体は実際には状態を持っていません(過度に単純化されたステートメントですが、あなたの目的には当てはまります)。コマンドを送信するclick()
と、ブラウザでコマンドが実行され、ブラウザがジョブを完了する(新しいページをロードする)のを待ってから、新しいページでコマンドを再度待機します。
WebDriver
常にブラウザが現在持っているもので動作します。
あなたの質問から、HtmlUnitDriver を使用していることがわかります。このドライバーでは、デフォルトで JavaScript が無効になっています (説明については、ここをクリックしてください)。このドライバーは Rhino JavaScript エンジンを使用しており、一般的なブラウザーでは使用されていません。これは、試しているアクションが Firefox では正常に機能するのに Selenium では機能しない理由を説明している可能性があります。
次のように、HtmlUnit で JavaScript を有効にしてみてください。
HtmlUnitDriver driver = new HtmlUnitDriver();
driver.setJavascriptEnabled(true);
ただし、代わりに FirefoxDriver を使用することをお勧めします。
WebDriver driver = new FirefoxDriver();
これは、Web ページを自分でナビゲートするときに表示される動作をエミュレートする必要があります。