Grid-Safari-Selenium 卡在 SafariDriver Launcher 页面 [second Tab] 上,方法是不关闭它并且不切换回第一个 Tab
Grid-Safari-Selenium is getting stuck on SafariDriver Launcher page[second Tab] by not closing it and NOT switching back to first Tab
元-
OS: OSX El capitan
硒版本:2.53.0
浏览器:Safari
浏览器版本:9.1
SafariDriver 版本:2.48.0,根据 SeleniumHQ 站点最新版本。
预期行为 -
SafariDriver Launcher page/tab 应该自动关闭并切换到我的 URL 打开的第一个选项卡。
实际行为 -
Selenium 卡在 SafariDriver Launcher 页面[Tab],因为它没有关闭并切换回第一个 Tab
重现步骤 -
尝试执行 TestNG.xml 中的 n 个测试用例,但通过关闭 SafariDriver Launcher 页面[选项卡],很少有 TC 能够正确执行。
但在少数情况下,Selenium 会卡在 SafariDriver Launcher 页面 [Tab] 上,方法是不关闭它并切换回我的 URL 将打开的第一个 Tab。
所需的解决方案 -
我想先查看当前打开了多少个标签:-
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));
}
}
您可以使用此代码关闭您想要的 window:
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 可能是您所在的当前 window(选项卡 2)的句柄。
元-
OS: OSX El capitan 硒版本:2.53.0 浏览器:Safari 浏览器版本:9.1 SafariDriver 版本:2.48.0,根据 SeleniumHQ 站点最新版本。
预期行为 -
SafariDriver Launcher page/tab 应该自动关闭并切换到我的 URL 打开的第一个选项卡。
实际行为 -
Selenium 卡在 SafariDriver Launcher 页面[Tab],因为它没有关闭并切换回第一个 Tab
重现步骤 -
尝试执行 TestNG.xml 中的 n 个测试用例,但通过关闭 SafariDriver Launcher 页面[选项卡],很少有 TC 能够正确执行。 但在少数情况下,Selenium 会卡在 SafariDriver Launcher 页面 [Tab] 上,方法是不关闭它并切换回我的 URL 将打开的第一个 Tab。
所需的解决方案 -
我想先查看当前打开了多少个标签:-
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));
}
}
您可以使用此代码关闭您想要的 window:
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 可能是您所在的当前 window(选项卡 2)的句柄。