我已经做了相当多的谷歌搜索,而Selenium似乎本身不支持点击弹出框中的“保存”按钮。但是,我看到了一个解决方法,可以在此问题中设置浏览器首选项 - Access to file download dialog in Firefox
给出的代码如下 -
FirefoxProfile firefoxProfile = new FirefoxProfile();
firefoxProfile.setPreference("browser.download.folderList",2);
firefoxProfile.setPreference("browser.download.manager.showWhenStarting",false);
firefoxProfile.setPreference("browser.download.dir","c:\\downloads");
firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk","text/csv");
WebDriver driver = new FirefoxDriver(firefoxProfile);//new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability);
driver.navigate().to("http://www.myfile.com/hey.csv");
不幸的是,我无法导航到文件位置,如下面一行所示,因为它将我重定向到网站的登录页面。
driver.navigate().to("http://www.myfile.com/hey.csv")
我已经登录网站并再次登录没有意义。即便如此,我必须打开一个新窗口处理程序并切换到新窗口(我认为它无论如何都不会起作用,因为在登录后它会指向弹出窗口的上一页)。是否有一些解决方法来避免这个
driver.navigate().to
并以某种方式单击弹出对话框中的“保存”按钮?
注1 :当我手动打开浏览器时,弹出窗口根本不显示。即使我没有手动更改firefox首选项以自动下载文件,当我单击上一个链接时文件也会开始下载。
Note2 :我手动更改了Firefox首选项以自动下载文件类型(在我的情况下为XML),但Selenium没有选择此首选项(预期的行为,我想)。
答案 0 :(得分:0)
简单地说,不可能与不属于DOM的任何东西进行交互。你不能让Selenium点击浏览器的“保存”按钮。
大多数情况下,下载文件并不是一个好主意(至少在您进行UI测试时不是这样)。
根据您对文件的确切要求,我建议您找另一种方法来测试该行为。