如何用java在Selenium webdriver中按“ALT + T”。我想通过按下来切换标签

时间:2015-07-01 13:12:48

标签: selenium selenium-webdriver selenium-chromedriver

我使用了下面的代码,但它抛出一个错误,上面写着“无法关注元素”。请帮忙。

String selectAll = Keys.chord(Keys.ALT,"T");
driver.findElement(By.tagName("html")).sendKeys(selectAll);

3 个答案:

答案 0 :(得分:1)

切换标签的最佳方法是使用switchTo(),如果您知道新的窗口名称:

driver.switchTo().window(WINDOW_NAME);

否则获取打开的窗口列表并使用它切换:

List<String> openTabs = driver.getWindowHandles();

    for(String tab in openTabs) {
     driver.switchTo().window(openTabs.get(tab);
    }

因此,您可以遍历打开的窗口,直到找到所需的窗口。

答案 1 :(得分:0)

您可以通过使用操作将Alt + Tab等ShortcutKeys发送到驱动程序而不使用元素。

public static void sendShortCut(WebDriver driver) {
    Actions action = new Actions(driver);
     action.sendKeys(Keys.chord(Keys.CONTROL, "T")).build().perform();
}

但是你的目标是切换到窗口/标签。在Selenium中,窗口和标签都是相同的。

我已经为您提供了两个解决方案,这些解决方案可以从函数名称中自我解释

public static void switchToWindowByTitle(WebDriver driver, String title) {
    Set<String> Handles = driver.getWindowHandles();
    for (String handle : Handles) {
        driver.switchTo().window(handle);
        String drivertitle = driver.getTitle().trim();
        if (drivertitle.equals(title)) {
            break;
        }
    }
}

//Index is 0 based
public static void switchToWindowByIndex(WebDriver driver, int index) {
    Set<String> handles = driver.getWindowHandles();
    if (handles.size() > index) {
        String handle = handles.toArray()[index].toString();
        driver.switchTo().window(handle);
    }
}

答案 2 :(得分:0)

您可以使用以下方式打开另一个标签页:

driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");

并使用以下方法切换到标签:

driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL, Keys.PAGE_DOWN);