[英]Selenium IE driver returns tab count as 1 while using getWindowHandles method on multiple tabs of same window
我正在使用Selenium Web驱动程序+ Internet Explorer使门户自动化,能够在现有窗口上打开多个新选项卡,但无法将URL传递给新打开的选项卡,IE无法识别新选项卡,并且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
我在IE8中也遇到了类似的问题,在调用driver.getWindowHandles()之前,我使用driver.switchTo()。defaultContent()解决了。 像这样:
// 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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.