“switchTo”方法无法切换到浏览器中的选项卡

时间:2015-09-06 10:46:38

标签: java selenium-webdriver

我使用下面的代码来测试窗口句柄。

新页面将在新选项卡中打开,但switchTo命令不会切换到它。

public static void main(String[] args) {
        Actions act = new Actions(driver);
        driver.get("https://www.google.co.in");

        String parentWin = driver.getWindowHandle();
        act.keyDown(Keys.LEFT_CONTROL).perform();
        driver.findElement(By.linkText("Images")).click();

        for(String newWindow: driver.getWindowHandles()){
            driver.switchTo().window(newWindow);
            driver.findElement(By.id("lst-ib")).sendKeys("hello world");
            driver.findElement(By.name("btnG")).click();
            driver.close();
        }


        driver.switchTo().window(parentWin);
        driver.findElement(By.linkText("Gmail")).click();


    }

此代码在此处投票为正确答案:来自@CODEBLACK

How to handle the new window in Selenium WebDriver using Java?

1 个答案:

答案 0 :(得分:1)

我对其工作原理的理解是每个驱动程序实例都是浏览器,而不是选项卡。但是......当我查找如何执行此操作时,我看到代码示例表明您的代码应该正常工作。所以我不确定它是否曾经工作过,现在没有,或者如果他们说的是标签但是意味着新的浏览器窗口......不管怎样,我找到了解决方案。有两种方法可以做到这一点。

  1. 在新的浏览器窗口而不是标签页中打开新页面。这是一个简单的修复...你只需将你的CTRL按键更改为SHIFT。

    act.keyDown(Keys.SHIFT).perform();

  2. 我没试过的另一种方法,但在下面的链接中有描述。它主要涉及使用CTRL + TAB键盘快捷键来移动打开的选项卡。您将不得不追踪自己的位置,并且根据打开的标签数量,这可能非常快。但

  3. http://design-interviews.blogspot.com/2014/11/switching-between-tabs-in-same-browser-window.html

    我会推荐#1,因为它感觉不那么hacky但你可能要求它在标签中打开并且必须与#2一起使用。