簡體   English   中英

無法使用Selenium Webdriver在Internet Explorer中將焦點切換到newtab /窗口

[英]Unable to switch focus to newtab/window in Internet Explorer using Selenium Webdriver

這里的問題是,我無法同時將焦點集中在新的標簽頁/窗口上,而是將焦點始終放在第一個標簽頁/窗口上。 請幫忙。

driver=new InternetExplorerDriver();
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");
//driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"n");
for (String winHandle : driver.getWindowHandles()) 
{
    driver.switchTo().window(winHandle);
}
driver.get("https://google.com/");

IE驅動程序不支持窗口中選項卡的枚舉。 此外,WebDriver通常不支持自動化“手動”打開的選項卡,例如使用Control+t打開的選項卡。 特定的驅動程序可能支持該功能,但這不是API合同的全球支持部分。

用戶嘗試“手動打開一個新標簽頁,切換到該標簽頁並使其自動化”的絕大多數情況下,用例並未得到充分考慮。 由於您拒絕說明為什么要執行此操作(而不是在新窗口中啟動新的驅動程序實例),因此無法推測您應該采取什么措施。

滿足您要求的最簡單方法是遵循以下原則:

  1. 在初始窗口上獲取一個句柄。
  2. 打開新窗口。
  3. 此時,獲取所有打開的窗口的句柄列表,然后刪除初始窗口句柄。
  4. 切換到上一步獲取的列表中的其余窗口句柄。

打開標簽頁后,嘗試使用此方法 ,使用Java機械手對其進行切換。 以下代碼使用解決您問題的相同原理。

ArrayList<String> tabs2 = new ArrayList<String>(driver.getWindowHandles());
    System.out.println(tabs2.size());

    for (int i = tabs2.size()-1; i>=0; i--) {
        Thread.sleep(2000);
        driver.switchTo().window(tabs2.get(i));
        Robot robot = new Robot();

        robot.keyPress(KeyEvent.VK_CONTROL);
        robot.keyPress(KeyEvent.VK_TAB);
        robot.keyRelease(KeyEvent.VK_TAB);
        robot.keyRelease(KeyEvent.VK_CONTROL);
        System.out.println(driver.getTitle() + "i: " + i);
        driver.close();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM