繁体   English   中英

使用C#在Selenium Web驱动程序中的弹出窗口句柄

[英]Popup window handle in Selenium Web Driver using C#

我有一个“文件导出”链接,当我单击它时,它将打开一个带有“打开文件”,“保存文件”和“确定”或“取消”按钮等选项的新子窗口。 当我手动执行步骤并按Enter键时,它可以工作并且文件被保存,但是当我自动化时,什么也没发生。

这是我的代码:

 //Click Export link
 driver.FindElement(By.Id("ReportViewer1_ctl01_ctl05_ctl01")).Click();
 //Switch to popup window
 driver.SwitchTo().Window(Driver.Instance.WindowHandles.Last());
 //Click Enter to accept save option
 driver.SwitchTo().ActiveElement().SendKeys(Keys.Enter);
 //Close child window
 driver.Close();
 //Switch back to Parent window
 driver.SwitchTo().Window(Driver.Instance.WindowHandles.First());

问题是该窗口卡在父窗口中,并且我无法将“ Enter”发送到弹出窗口

由于文件下载不是浏览器固有的,因此无法使用Selenium处理。 记住, Selenium只是使浏览器自动化的工具。 但是,您可以通过设置配置文件来解决此问题。

FirefoxProfile profile = new FirefoxProfile();
WebDriver driver = new FirefoxDriver(profile); 

profile.setPreference("browser.helperApps.neverAsk.saveToDisk" , "application/octet-stream;application/csv;text/csv;application/vnd.ms-excel;"); 
profile.setPreference("browser.helperApps.alwaysAsk.force", false);
profile.setPreference("browser.download.manager.showWhenStarting",false);
profile.setPreference("browser.download.folderList", 2); 
profile.setPreference("browser.download.dir","e:\\SampleExcel"); 

看到这个

问题解决了! 如果有人在使用Selenium Webdriver下载文件时遇到问题,这就是解决方案。

    [TestClass]
public class UnitTest1
{
    [TestMethod]
    public void FileDownload()
    {
        FirefoxProfile profile = new FirefoxProfile();
        profile.SetPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream");
        IWebDriver driver = new FirefoxDriver(profile);
        driver.Navigate().GoToUrl("http://www.joomla.org/download.html");
        Thread.Sleep(3000);
        driver.FindElement(By.Id("latest")).Click();
        driver.Close();
    }
}

这可以通过使用AutoIT脚本来完成

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM