在selenium webdriver中错误地显示打开的窗口数

时间:2016-09-05 18:01:33

标签: selenium selenium-webdriver webdriver

我写了下面的代码,我期待在控制台中我应该得到 打开的窗户总数:1 但结果是Total windows打开:2 请让我知道为什么它显示总窗口打开:2而不是1

  

Firefox版本: 48.0.2 操作系统:Windows 10 Selenium Webdriver版本:   3.0.0

import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class TravelOPod {
   public static void main(String[] args) {

      System.setProperty("webdriver.gecko.driver","C:\\Eclipse\\Drivers\\geckodriver.exe");
      WebDriver driver = new FirefoxDriver();

      driver.manage().window().maximize();
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
      driver.manage().timeouts().pageLoadTimeout(15, TimeUnit.SECONDS);

      Set<String> windowIDs = driver.getWindowHandles();
      System.out.println("Total windows opened: "+windowIDs.size());
      Iterator<String> it = windowIDs.iterator();
      System.out.println(it.next());
      System.out.println(it.next());
   }
}

2 个答案:

答案 0 :(得分:0)

我认为,第一个标签是您的默认标签,另一个标签可能是由您的某个扩展程序引起的。

您可以在附加组件页面上检查不重要或无法识别的扩展名。

我希望,停用意外的扩展程序可以解决您的问题。

答案 1 :(得分:0)

  

driver.getWindowHandles();

这将返回字符串集,这只是窗口对象的哈希码值。因此,在您的情况下,您有两个窗口对象,第一个是默认情况下,第二个是打开的新选项卡

我想,由于您正在打印的声明,您自己会感到困惑,

  

System.out.println(“打开的总窗口数:”+ windowIDs.size());

它不打印“打开”窗口的大小,而是打印可用的窗口

如果你想只抓住一个窗口,那就用吧 driver.getWindowHandle(); //这将返回String

中的当前驱动程序对象