信頼性の高いマルチウィンドウ/タブ管理
については、WindowHandles
セレニウムの
WindowHandles
をループするときの一貫性のない順序です。これにより、特定のタブまたはWindowsのターゲティングが困難になります
ソリューションには、新しいウィンドウ/タブの作成にとリアルタイムのハンドルコレクションを組み合わせることが含まれます。これにより、信頼できる反復と切り替えを可能にし、更新されたWindowHandles
リストが保証されます。
WebDriverWait
WindowHandles
このコード:
最初のGoogleタブのハンドルを
<code class="language-java">WebDriver driver = new InternetExplorerDriver(); driver.get("http://www.google.com"); String firstTab = driver.getWindowHandle(); ((JavascriptExecutor) driver).executeScript("window.open('http://facebook.com/');"); WebDriverWait wait = new WebDriverWait(driver, 5); wait.until(ExpectedConditions.numberOfWindowsToBe(2)); Set<String> handles = driver.getWindowHandles(); Iterator<String> iterator = handles.iterator(); while (iterator.hasNext()) { String currentTab = iterator.next(); if (!firstTab.equalsIgnoreCase(currentTab)) { driver.switchTo().window(currentTab); System.out.println("Now working on Facebook"); } }</code>。
に保存します
を使用して、進行する前に2つのウィンドウが開いていることを確認します。firstTab
WebDriverWait
このアプローチは、Pythonのような他の言語に適応できます。 この方法では、セレンテスト内のブラウザウィンドウとタブの一貫した信頼できる管理を保証します。以上がSelenium の WindowHandles を使用して複数のブラウザ ウィンドウとタブを確実に管理および反復するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。