IE11 の Selenium を使用して複数のブラウザ ウィンドウを効率的に管理する
効果的な Web テストには、多くの場合、複数のブラウザーのタブとウィンドウを管理する必要があります。 Selenium WebDriver は強力ですが、Internet Explorer 11 で WindowHandles
を処理する際に課題が生じます。これは、主にハンドルが返される順序が一貫していないためです。
WindowHandles の予測不可能な性質
Selenium のドキュメントには、WindowHandles
の順序は保証されていないと明示的に記載されています。 このため、インデックスベースのスイッチングへの依存は信頼性が低くなり、エラーが発生しやすくなります。 一部のユーザーは、ページ タイプにハンドルをマッピングする辞書を作成することでこの問題に対処しますが、これにより、特にウィンドウが閉じている場合に、複雑さとメンテナンスのオーバーヘッドが追加されます。
優れたアプローチ: 動的ハンドル コレクション
より堅牢なソリューションには、新しいウィンドウが開くたびに WindowHandles
を使用して getWindowHandles
を動的に収集することが含まれます。これにより、ハンドルは常に作成順になります。
Java コード例
次の Java コードは、この改良された技術を示しています。
<code class="language-java">// Initialize WebDriver WebDriver driver = new InternetExplorerDriver(); driver.get("http://www.google.com"); // Open new windows/tabs ((JavascriptExecutor) driver).executeScript("window.open('http://facebook.com/');"); ((JavascriptExecutor) driver).executeScript("window.open('http://youtube.com/');"); // Collect and iterate through window handles Set<String> windowHandles = driver.getWindowHandles(); Iterator<String> iterator = windowHandles.iterator(); while (iterator.hasNext()) { String handle = iterator.next(); driver.switchTo().window(handle); // Perform actions on the current window }</code>
概要
この動的ハンドル収集方法は、Internet Explorer 11 の Selenium で複数のウィンドウを管理するためのよりクリーンで信頼性の高いアプローチを提供し、手動ハンドル追跡の複雑さを回避し、一貫したウィンドウ切り替えを保証します。
以上がインターネットエクスプローラー11のセレンウィンドウハンドルを確実に反復するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。