我有一个"文件导出"链接,当我点击它时,它正在打开一个新的子窗口,其中包含"打开文件","保存文件"等选项。和确定或取消按钮。当我手动完成步骤并点击回车键时,它可以正常工作并保存文件,但是当我自动化时,没有任何反应。
这是我的代码:
//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());
问题是窗口卡在父窗口中,我无法发送"输入"到弹出窗口
答案 0 :(得分:2)
由于文件下载不是浏览器的原生文件,因此无法使用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");
请参阅this
答案 1 :(得分:0)
问题解决了! 如果任何人有使用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();
}
}
答案 2 :(得分:-2)
这可以通过使用AutoIT脚本
来完成