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