driver.getWindowHandles();不工作

时间:2015-09-07 01:17:11

标签: selenium selenium-webdriver webdriver window-handles

这是代码,它应该打印3但它只打印1.

不明白什么不起作用。 (由于这个原因,我也无法切换到新窗口。我想通过索引切换到窗口。)

driver.get("https://www.google.co.in");

//open two more tabs        
act.keyDown(Keys.LEFT_CONTROL).perform();
driver.findElement(By.linkText("Images")).click();
driver.findElement(By.linkText("Images")).click();

// save windows in a set
Set<String> winlist = driver.getWindowHandles();
Thread.sleep(5000);

//print set size --------> wrong, prints only 1
System.out.println(winlist.size());

2 个答案:

答案 0 :(得分:0)

这似乎只是Firefox驱动程序的问题。我能够使用当前版本的Firefox和Selenium版本 2.47.1 重现。但是,我确实认为降级Firefox可能会解决问题而且我还没有尝试过。我确实在Chrome上尝试了相同的代码块,以确保问题与驱动程序相关并且具有预期结果。

public static void main(String[] args) {

    System.setProperty("webdriver.chrome.driver", "E:\\working\\selenium\\drivers\\chromedriver.exe");
    WebDriver driver = new ChromeDriver();

    Actions act = new Actions(driver);
    driver.get("https://www.google.co.in");

    //get the original window handles
    String originalHandle = driver.getWindowHandle();
    //open two more tabs        
    act.keyDown(Keys.LEFT_CONTROL).perform();
    driver.findElement(By.linkText("Images")).click();
    driver.findElement(By.linkText("Images")).click();

    // save windows in a set
    Set<String> winlist = driver.getWindowHandles();
    for(String win:winlist){
        if(!win.equals(originalHandle)){
            driver.switchTo().window(win);
            System.out.println(driver.getTitle());
        }
    }    
    //print set size --------> wrong, prints only 1
    System.out.println(winlist.size());
}
  

控制台输出:

     

启动ChromeDriver 2.16.333243

     端口25687上的

(0bfa1d3575fc1044244f21ddb82bf870944ef961)

     

只允许本地连接。

     

Google图片

     

Google图片

     

3

答案 1 :(得分:0)

有什么帮助我解决这个问题: 问题出在ChromeDriver的声明中: 更改“WebDriver driver = new ChromeDriver();” “ChromeDriver driver = new ChromeDriver();”

因此,ChromeDriver的创建应如下所示:

System.setProperty("webdriver.chrome.driver", "path to chromedriver.exe");
ChromeDriver driver = new ChromeDriver();
driver.get("https://www.google.co.in");