Переключать активные вкладки с помощью Selenium [duplicate]

На этот вопрос уже есть ответ здесь:

Как перейти на другую вкладку с помощью Selenium WebDriver с Java 8 ответов

Я разработал этот код, который используется для открытия всех результатов поиска в новой вкладке:

String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL, Keys.RETURN);
results.get(i).sendKeys(selectLinkOpeninNewTab);

for (int i = 0; i < results.size(); i++)
{
    ArrayList<String> tabs2 = new ArrayList<String>(driver.getWindowHandles());
    driver.switchTo().window(tabs2.get(1));
    driver.close();
    driver.switchTo().window(tabs2.get(0));
}

я хочу, чтобы при открытии всех вкладок с результатами поиска я хотел переключаться между всеми вкладками с задержкой в ​​2 секунды.

Как я могу это реализовать?

Ответы на вопрос(1)

Решение Вопроса

попробуйте этот код,

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class TabSwitching {

    public static void main(String[] args) throws InterruptedException, AWTException {
        System.setProperty("webdriver.chrome.driver", "D:/WorkSpace/Driver/chromedriver.exe");
        WebDriver driver = new ChromeDriver();

        driver.get("http://www.google.com/xhtml");
        Thread.sleep(5000);
        WebElement searchBox = driver.findElement(By.name("q"));
        searchBox.sendKeys("Software testing");
        searchBox.submit();

        System.out.println("Current Url: " + driver.getCurrentUrl());

        WebDriverWait wait = new WebDriverWait(driver, 10);
        wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("h3.r a")));

        List<WebElement> results = driver.findElements(By.xpath("//h3[@class='r']/a"));

        for (WebElement ele : results) {
            String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL, Keys.RETURN);
            ele.sendKeys(selectLinkOpeninNewTab);
        }
        Thread.sleep(5000);
        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();
        }
    }
}
 Peter Penzov28 июн. 2016 г., 14:28
Хорошо, я удаляю это, но все еще это не работает.
 selva28 июн. 2016 г., 14:26
Хай, это потому, что я запрограммировал это таким образом. это не ошибка в Chrome
 selva28 июн. 2016 г., 14:28
добавить некоторые действия в нем. Когда вы только что удалили driver.close (); ничего не случится. Просто добавил какое-то действие вроде проверки элемента в нем.
 Peter Penzov28 июн. 2016 г., 14:31
Можете ли вы показать мне пример, пожалуйста?
 Peter Penzov28 июн. 2016 г., 13:55
Похоже, в Chrome есть ошибка, и она не работает должным образом.
 Peter Penzov28 июн. 2016 г., 13:41
Вкладки закрываются одна за другой, но я хочу переключать активные вкладки.
 selva28 июн. 2016 г., 14:34
 selva28 июн. 2016 г., 14:27
Вместо driver.close (); делай то, что хочешь.

Ваш ответ на вопрос