Meta -
操作系统:OSX El capitan Selenium版本:2.53.0 浏览器:Safari 浏览器版本:9.1 SafariDriver版本:2.48.0,这是SeleniumHQ网站的最新版本。预期行为 -
SafariDriver Launcher页面/标签应自动关闭,并切换到我的网址开启的第一个标签页。
实际行为 -
Selenium卡在SafariDriver Launcher页面[Tab]上,没有关闭它并切换回第一个标签
重现的步骤 -
尝试从TestNG.xml执行n个测试用例,但通过关闭SafariDriver Launcher页面[tab],很少有TC正在执行。 但是在少数情况下,Selenium会在SafariDriver Launcher页面[Tab]上卡住而不关闭它并切换回第一个Tab,我的URL将被打开。
必需的解决方案 -
我想首先检查当前打开的标签数量: -
if(browser.equals("safari")){
capability=DesiredCapabilities.safari();
capability.setBrowserName("safari");
capability.setPlatform(Platform.MAC);
capability.setVersion("9.1");
capability.setJavascriptEnabled(true);
driver=new RemoteWebDriver(new URL(grid_url),capability);
driver.get(url);
Thread.sleep(2000);
String windowHandle = driver.getWindowHandle();
ArrayList tabs = new ArrayList (driver.getWindowHandles());
if(tabs.size()>1){
<***Need a solution here to close second tab and switch to first tab***>
driver.switchTo().window(tabs.get(0));
}
}
答案 0 :(得分:0)
您可以使用此代码关闭您想要的窗口:
for(String handle : driver.getWindowHandles()) {
if (!handle.equals(originalHandle)) { //the window handle you want to close
driver.switchTo().window(handle);
driver.close(); // would close the specific tab you wanted
}
}
在你的情况下,originalHandle可能是你当前窗口(标签2)的句柄。