我正在使用selenium框架2.33对WebPage进行测试。这里的TestCase应该验证文件的下载。
以下代码适用于Firefox 21及更早版本。自FF 22更新以来,它已不再有效,我还没有找到原因。
我用它来保存tar.gz文件,但是txt或CSV文件也失败了。
设置驱动程序:
FirefoxProfile profile = new FirefoxProfile();
profile.AcceptUntrustedCertificates = true;
profile.SetPreference("browser.download.dir", System.Environment.GetEnvironmentVariable("TEMP"));
profile.SetPreference("browser.download.folderList", 2);
profile.SetPreference("browser.download.manager.showWhenStarting", false);
profile.SetPreference("browser.helperApps.alwaysAsk.force", false);
profile.SetPreference("browser.helperApps.neverAsk.saveToDisk", "text/xml, text/csv, text/plain, text/log, application/zlib, application/x-gzip, application/x-compressed, application/x-gtar, multipart/x-gzip, application/tgz, application/gnutar, application/x-tar");
profile.SetPreference("pdfjs.disabled", true);
IWebDriver webDriver = new FirefoxDriver(profile);
测试:
webDriver.Navigate().GoToUrl("https://example.com/downloadthis.txt");
注意: 在firefox 22中,“about:config”存在具有给定参数的“browser.helperApps.neverAsk.saveToDisk”行。但尽管如此,当它在保存位置检查预期文件时,弹出“保存文件”对话框并且测试失败。
有没有人有想法或遇到过这个?
编辑:格式化
答案 0 :(得分:3)
好的,在用户user1177636的帮助下,我找到了解决方案。
Firefox已将.tar.gz文件的MIME类型从FF 21更改为22
old:application / x-gzip new:application / gzip
将设置中的行更正为:
profile.SetPreference("browser.helperApps.neverAsk.saveToDisk", "text/xml, text/csv, text/plain, text/log, application/zlib, application/x-gzip, application/x-compressed, application/x-gtar, multipart/x-gzip, application/tgz, application/gnutar, application/x-tar, application/gzip");
它再次有效!
THX user1177636,我赞成你的评论(如果这有意义的话)!
答案 1 :(得分:0)
您可以下载所有文件(例如:.xls,.csv,.pdf)
我的申请中也面临同样的问题:
我在java中使用Robot获得了解决方案
以下代码我写下载所有文件
Thread.sleep(1000L);
//create robot object
Robot robot = new Robot();
Thread.sleep(1000L);
//Click Down Arrow Key to select "Save File" Radio Button
robot.keyPress(KeyEvent.VK_DOWN);
Thread.sleep(1000L);
// Click 3 times Tab to take focus on "OK" Button
robot.keyPress(KeyEvent.VK_TAB);
Thread.sleep(1000L);
robot.keyPress(KeyEvent.VK_TAB);
Thread.sleep(1000L);
robot.keyPress(KeyEvent.VK_TAB);
Thread.sleep(1000L);
//Click "Enter" Button to download file
robot.keyPress(KeyEvent.VK_ENTER);
Thread.sleep(5000L);
System.out.println("Robot work Complete");