当前位置: 首页 > 知识库问答 >
问题:

导出文档时窗口关闭,无法切换到父窗口

蔚桐
2023-03-14

     String parent= driver.getWindowHandle();

    for (String child : driver.getWindowHandles()) {

        if(!parent.equalsIgnoreCase(child))
        {

        driver.switchTo().window(child);


        if(browser.equals("chrome"))
        {
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[contains(.,'Export')]"))).click();
        }
        else if(browser.equals("IE"))
        {
            wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[contains(.,'Export')]")));

            WebElement ele=driver.findElement(By.xpath("//a[contains(.,'Export')]"));

            myRobot.DownloadFileInIEBrowser(driver, ele);   
        }
        }
    }
   System.out.println("current handles"+driver.getWindowHandle());
   driver.switchTo().window(parent);
 public class myRobot {

public static void DownloadFileInIEBrowser(WebDriver driver,WebElement ele) throws AWTException, InterruptedException
{

    Robot robot = new Robot();
   //get the focus on the element..don't use click since it stalls the driver          
    new Actions(driver).moveToElement(ele).perform();

    Thread.sleep(3000);
    Actions action = new Actions(driver);
    action.contextClick(ele).build().perform(); //right click on focus element
    Thread.sleep(5000);



    for(int i=0;i<2;i++)
    {
   robot.keyPress(KeyEvent.VK_ENTER);         
   robot.keyRelease(KeyEvent.VK_ENTER);
    }
   robot.delay(2000);
   /*robot command to move cursor to dialog pop up window
    * Ctrl+F6 pressed to move cursor to pop up dailog window in IE while downloading
    * Three times Tab button is pressed to focus cursor on Save button
    * Hit Enter again to save file
    */
   robot.keyPress(KeyEvent.VK_CONTROL);
   robot.keyPress(KeyEvent.VK_F6);
   robot.keyRelease(KeyEvent.VK_F6);
   robot.keyRelease(KeyEvent.VK_CONTROL);
   for(int i=0;i<3;i++)
   {
   robot.keyPress(KeyEvent.VK_TAB);
   robot.keyRelease(KeyEvent.VK_TAB);
   }
   robot.keyPress(KeyEvent.VK_ENTER);
   robot.keyRelease(KeyEvent.VK_ENTER);

}

}

共有1个答案

邢雨华
2023-03-14

首先,根据我自己的经验,getwindowhandles()需要一些时间。

其次-好于getwindowhandles()作为arraylist

第三-切换到WindowHandle而不是parent。

ArrayList<String> winHandles = new ArrayList<String> (driver.getWindowHandles());
Thread.sleep(500);
driver.switchTo().window(winHandles.get(1));
// driver.switchTo().window(winHandles.get(0));
 类似资料:
  • 我正在IE上测试。单击后,我切换到子窗口,但无法返回父窗口,出现错误“窗口已关闭”。

  • 脚本: 单击父窗口中的审核按钮 子窗口已加载 将控件切换到子窗口 单击子窗口中的“确定”按钮 窗口关闭 从父窗口继续测试 在这里,我面临的挑战是在单击“确定”按钮后切换到父窗口。当窗户关闭时。 硒网络驱动程序:2.48

  • 本文向大家介绍c# 实现子窗口关闭父窗口也关闭的方法,包括了c# 实现子窗口关闭父窗口也关闭的方法的使用技巧和注意事项,需要的朋友参考一下 其实是窗口间通讯的问题,在form1上打开form2 ,form2 关闭时关闭form1 实现方法: 在子窗口form2中声明事件: 然后在它的关闭事件中触发本事件: 在父窗口form1中(比如登陆窗口中): 然后弹出子form2窗体的地方这样写: 以上这篇c

  • 我在一个场景中执行以下步骤: 打开浏览器-->导航到并单击打开新窗口的链接 使用-->在子窗口上执行操作。 关闭子窗口。 切换回父窗口。 获取当前窗口的标题。 步骤1到3工作很好。但是步骤4抛出了一个异常。为了更清楚,我在抛出异常之前包含了日志消息。n 我们正在使用一个基于flashSelenium的特殊框架,这里的开发人员已经成功地将flash Selenium与WebDriver集成在一起(最

  • 如果单击父窗口上的链接,子窗口将打开,在子窗口中选择值后,子窗口将自动关闭,控件仍处于关闭窗口中。如何将控件带回父窗口。