【问题标题】:driver.getWindowHandles(); not workingdriver.getWindowHandles();不工作
【发布时间】:2015-09-07 01:17:11
【问题描述】:

这是代码,它应该打印 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());

【问题讨论】:

标签: selenium selenium-webdriver webdriver window-handles


【解决方案1】:

这似乎只是 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

(0bfa1d3575fc1044244f21ddb82bf870944ef961) 在端口 25687

只允许本地连接。

谷歌图片

谷歌图片

3

【讨论】:

    【解决方案2】:

    什么可以帮助我解决这个问题: 问题出在 ChromeDriver 的声明中: 更改“WebDriver 驱动程序 = 新 ChromeDriver();” to "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");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      • 2018-12-22
      • 2016-04-19
      相关资源
      最近更新 更多