java - 切换到特定选项卡并关闭其他选项卡

标签 java selenium selenium-webdriver

我正在 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/

相关文章:

selenium - 如何将 Selenium Webdriver 连接到现有的 Firefox/Chrome 浏览器 session ?

python - 通过click()找到超链接后如何使用find_element

java - 使用 Selenium 在 Chrome 中获取整页屏幕截图

java - JPA 查询创建顺序由

java - 如何找出 BufferedReader#readLine() 用于拆分行的行分隔符?

Selenium 不启动 webdriver

javascript - Jasmine - 无法再通过 executeScript 滚动窗口

java - 同步 Collection 列表

java - xml错误: The markup in the document following the root element must be well-formed

java - 为每个选择元素设置值 - Java Selenium WebDriver