Java で Selenium WebDriver を使用したタブの切り替え
Selenium WebDriver を使用して Web ページを自動化する場合、タブ間の切り替えは一般的な要件です。ただし、同じウィンドウ内のタブを扱う場合、両方のタブが同じウィンドウ ハンドルを持つ可能性があるため、問題が発生します。
問題:
次のようなシナリオを自動化する場合新しいタブを開き、そのタブ内でアクションを実行し、元のタブ (親) に戻ると、スイッチ ハンドルが機能しない場合があります。タブは同じウィンドウ ハンドルを共有しているため、タブ間の切り替えが無効になる場合があります。
解決策 1: ウィンドウ ハンドルを追跡する
ウィンドウ ハンドルが利用可能な場合は、次を使用してタブを切り替えることができます。次の手順:
ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles()); driver.switchTo().window(tabs.get(1)); // Switch to the new tab driver.close(); // Close the new tab driver.switchTo().window(tabs.get(0)); // Switch back to the parent tab
解決策 2: Selenium アクションを使用する(実験的)
実験的な Selenium.Actions クラスは、ウィンドウ タイトルごとにタブを切り替えるために使用できる select_window メソッドを提供します。
WebElement parentTab = driver.findElement(By.xpath("//ul/li/a[@id='tab1_link']")); WebElement newTab = driver.findElement(By.xpath("//ul/li/a[@id='tab2_link']")); Actions actions = new Actions(driver); actions.keyDown(Keys.CONTROL).click(newTab).keyUp(Keys.CONTROL).build().perform(); actions.keyDown(Keys.CONTROL).click(parentTab).keyUp(Keys.CONTROL).build().perform();
ドライバー ライブラリがSelenium.Actions クラスにアクセスするには最新の状態にしてください。
以上がJava で Selenium WebDriver を使用してブラウザのタブを効率的に切り替える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。