我正在 Chrome 中打开一个网站,但在此之前我每次运行都会收到 chrome 设置窗口。我想切换到新窗口并关闭前一个窗口。我尝试过 driver.close() 和 driver.quit()但整个窗口正在关闭。
1)如何知道哪个是子窗口,哪个是父窗口? 2)如何关闭“chrome设置”窗口? 下面是我正在使用的代码:
System.setProperty("webdriver.chrome.driver", ".//chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://demoqa.com/");
Thread.sleep(2000);
//windows maximize
driver.manage().window().maximize();
String winHandleBefore = driver.getWindowHandle();
// Switch to new window opened
for(String winHandle : driver.getWindowHandles()){
driver.switchTo().window(winHandle);
}
driver.switchTo().window(winHandleBefore);
最佳答案
这个想法是获取当前窗口 id(父窗口),并获取包括当前窗口在内的所有窗口的 id。然后一一切换到所有可用窗口并检查它是否是父窗口然后关闭它。
假设您现在打开了两个选项卡,并且您位于第一个选项卡(父选项卡)中。在本例中,它将是安全选项卡。
String winHandleBefore = driver.getWindowHandle();
//All tab's id (security + toolsQA) and storing it.
Set<String> all = driver.getWindowHandles();
//Get all the tab id's including security and iterate
for(String winHandle : driver.getWindowHandles())
{
if(winHandle.equals(winHandleBefore))
{
//Condition satisfied. Switching to the security tab and closing it
driver.switchTo().window(winHandle);
driver.close();
}
}
//Now the security tab will be closed we need to switch to the toolsQA whose id is in "all"
//Removing the security tab id from all.
all.remove(winHandleBefore);
//Now we have only one toolsqa id in "all"
for(String winHandle : all)
{
driver.switchTo().window(winHandle);
//Now in toolsQA
注意:由于在这种情况下我们只有两个选项卡,因此该解决方案可能不是最好的,但应该可行。谢谢。
关于java - 切换到特定选项卡并关闭其他选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44817521/