如何验证selenium webdriver中是否打开了新标签?

时间:2014-04-22 11:55:33

标签: selenium

我有一种情况,我必须检查点击链接后是否打开了新标签。如果选项卡打开,我也想检查标题。

有没有人对此有所了解。

5 个答案:

答案 0 :(得分:12)

C#也是如此;这是经过测试的,无论链接是在新标签页还是新窗口中打开,都可以使用。

var browserTabs = driver.WindowHandles;            
driver.SwitchTo().Window(browserTabs[1]);

//check is it correct page opened or not (e.g. check page's title or url, etc.)
// ...
//close tab and get back
driver.Close();
driver.SwitchTo().Window(browserTabs[0]);

希望这可以帮助任何遇到这个帖子的人。

答案 1 :(得分:3)

尝试切换到新标签页,然后验证页面是否正确。

在Java中,它可以看起来像:

//get window handlers as list
List<String> browserTabs = new ArrayList<String> (driver.getWindowHandles());
//switch to new tab
driver.switchTo().window(browserTabs .get(1));
//check is it correct page opened or not (e.g. check page's title)
//...
//then close tab and get back
driver.close();
driver.switchTo().window(browserTabs.get(0))

答案 2 :(得分:2)

您可以使用以下方法来执行所需的等待,直到选项卡完全加载。

  public static void switchTabs(WebDriver driver, int expectedWindowsCount,int SwitchtoWindow) throws Exception {
    (new WebDriverWait(driver, 30)).until(ExpectedConditions.numberOfWindowsToBe(expectedWindowsCount));
    ArrayList<String> tabs2 = new ArrayList<String>(driver.getWindowHandles());
    driver.switchTo().window(tabs2.get(SwitchtoWindow));
}

该方法将检查有多少个活动窗口处理程序可用,并等到所需的处理程序出现后再切换到选项卡。

答案 3 :(得分:0)

使用等待没有选项卡打开以确保打开新选项卡

(new WebDriverWait(driver, 30)).until(ExpectedConditions.numberOfWindowsToBe(2));

然后切换到新标签页

protected void switchTabsUsingPartOfUrl(String platform) {
    String currentHandle = null;
    try {
        final Set<String> handles = driver.getWindowHandles();
        if (handles.size() > 1) {
            currentHandle = driver.getWindowHandle();
        }
        if (currentHandle != null) {
            for (final String handle : handles) {
                driver.switchTo().window(handle);
                if (currentUrl().contains(platform) && !currentHandle.equals(handle)) {
                    break;
                }
            }
        } else {
            for (final String handle : handles) {
                driver.switchTo().window(handle);
                if (currentUrl().contains(platform)) {
                    break;
                }
            }
        }
    } catch (Exception e) {
        System.out.println("Switching tabs failed");
    }
}

调用此方法并将参数传递给要切换到的选项卡的URL的子字符串

driver.getTitle().equals("Title");

然后验证页面标题

答案 4 :(得分:0)

如果您在Groovy中进行测试自动化,这将为您提供帮助

def browserTabs = driver.getWindowHandles()
driver.switchTo().window(browserTabs[1])
assert //Validate your new page title//