当前位置: 首页 > 知识库问答 >
问题:

Selenium IE驱动程序在同一窗口的多个选项卡上使用getWindowHandles方法时,将选项卡计数返回为1

公孙琛
2023-03-14

我正在使用selenium web驱动程序Internet Explorer自动化一个门户,能够在现有窗口上打开多个新选项卡,但无法将URL传递给新打开的选项卡,即无法识别新选项卡,getWindowHandles()返回计数为1,同样的代码在Chrome上运行良好。

样本代码1:

String baseUrl = "www.facebook.com";
driver.get(baseUrl);
driver.findElement(By.xpath("//*[@id='userName']")).sendKeys("xyz");
driver.findElement(By.xpath("//*[@id='password']")).sendKeys("****");
driver.findElement(By.xpath("//*[@id='loginButton']")).click();

driver.findElement(By.cssSelector("Body")).sendKeys(Keys.CONTROL +"t");   
driver.getWindowHandles();
ArrayList<String> tabs =  new ArrayList<String>(driver.getWindowHandles()); 

driver.switchTo().window(tabs.get(1)); //switches to new tab
driver.get("www.google.com");

示例代码2:

String baseUrl = "www.facebook.com";
driver.get(baseUrl);
driver.findElement(By.xpath("//*[@id='userName']")).sendKeys("xyz");
driver.findElement(By.xpath("//*[@id='password']")).sendKeys("****");
driver.findElement(By.xpath("//*[@id='loginButton']")).click();

String parent = driver.getWindowHandle();
driver.findElement(By.cssSelector("Body")).sendKeys(Keys.CONTROL +"t");
Thread.sleep(3000);
for(String winHandle : driver.getWindowHandles()){
    if(!winHandle.equals(parent)){
        driver.switchTo().window(winHandle);
        driver.get("www.google.com");
    }
}

还尝试了其他几种更改IE配置的方法,如更改受保护模式/覆盖自动cookie处理,但均无效。

有没有办法通过代码在IE中打开新标签,并使用Selenium中的任何方法获得准确的标签计数?

配置:

IE:11,Selenium java:2.47/3.7 IEDriver:3.3.0/2.53,Windows 7

共有1个答案

黄俊智
2023-03-14

我有一个类似的问题与IE8和我解决使用driver.switchTo(). defaultContent()之前调用driver.getWindowHandles()。像这样的东西:

// Save the parent
parent = driver.getWindowHandle();
driver.switchTo().defaultContent();
for (String winHandle : driver.getWindowHandles()) {
        driver.switchTo().window(winHandle);
        if (!winHandle.equals(parent)) {
        // Do something
        }
}
driver.close();
driver.switchTo().window(parent);
 类似资料:
  • 我对tabView有问题。第一个选项卡应始终显示相同的内容(称为搜索模板,用#{not curSearch.isClosable()}标识)。所有其他选项卡都是搜索实例(用#{curSearch.isClosable()}标识) 代码如下: 不幸的是,在第一个选项卡上有一些被称为curSearch对象的方法,这些方法仅在第二个选项卡和后面的选项卡上使用。如果我不使用ui:insert,它不会改变任

  • 问题内容: 我想在包含该链接页面的同一窗口和同一选项卡中打开一个链接。 当我尝试使用打开链接时,它将在新选项卡中打开,而不是在同一窗口的同一选项卡中打开。 问题答案: 你需要使用name属性: 编辑:URL应该在协议之前。没有它,则尝试打开相对URL。经过Chrome 59,Firefox 54和IE 11的测试。

  • 当在Selenium IE Web Driver中激发时,它将打开一个新窗口,而不是在新选项卡中打开。 通常在IE浏览器中,它会打开一个新的选项卡,但在Selenium Web Driver中不会。 需要修复。

  • 我已经安装了 console2 和 git bash,我的目标是让 git bash 使用选项卡,我已经将控制台设置的目标路径更改为。当我打开控制台时,它不再为我提供选项卡选项。

  • 我正在尝试切换选项卡并通过导航到url进行操作'http://toolsqa.com/'然后转到演示站点-- 使用的不同代码: 代码1: 代码2: 代码3: 以上是我用来切换标签的方法,但是还没有成功。请在这方面帮助我。

  • 在jQuery中创建选项卡。单击其他选项卡时,所有选项卡都将消失。我想不出解决办法 以下是无法正常工作的页面:http://www.sleepfullnights.com/products/sfn-537 这是另一个用它工作的人的JSFIDLE:http://jsfiddle.net/gravitybox/7pHg4/我已经复制并粘贴了其中的每个元素到页面中,问题仍然存在。 一个人指出,当点击标签