Java 关注最近使用SeleniumWebDriver打开的选项卡

Java 关注最近使用SeleniumWebDriver打开的选项卡,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我有一个网站,当我点击按钮时,它会在同一个浏览器中打开带有链接的新标签页 我想告诉selenium关注最近打开的选项卡 我尝试了很多方法,但没有一种对我有用 我试过: 方法1: driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL); driver.findElement(By.cssSelector("body")).sendKeys(Keys.TAB); ((JavascriptExecutor) webDrive

我有一个网站,当我点击按钮时,它会在同一个浏览器中打开带有链接的新标签页

我想告诉selenium关注最近打开的选项卡

我尝试了很多方法,但没有一种对我有用

我试过:

方法1:

driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL);
driver.findElement(By.cssSelector("body")).sendKeys(Keys.TAB);
((JavascriptExecutor) webDriver).executeScript("window.focus();");
driver.switchTo().window(driver.getWindowHandles().last());
方法2:

driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL);
driver.findElement(By.cssSelector("body")).sendKeys(Keys.TAB);
((JavascriptExecutor) webDriver).executeScript("window.focus();");
driver.switchTo().window(driver.getWindowHandles().last());
方法3:

driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL);
driver.findElement(By.cssSelector("body")).sendKeys(Keys.TAB);
((JavascriptExecutor) webDriver).executeScript("window.focus();");
driver.switchTo().window(driver.getWindowHandles().last());
试试这个,使用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);
           // do what you needed
        }
ArrayList tabs2=新的ArrayList(driver.getWindowHandles());
System.out.println(tabs2.size());
对于(int i=tabs2.size()-1;i>=0;i--){
《睡眠》(2000年);
driver.switchTo().window(tabs2.get(i));
机器人=新机器人();
机器人按键(KeyEvent.VK_控制);
robot.keyPress(KeyEvent.VK_选项卡);
robot.keyRelease(KeyEvent.VK_选项卡);
robot.keyRelease(KeyEvent.VK_控制);
System.out.println(driver.getTitle()+“i:”+i);
//做你需要的
}