问题描述:在做一个项目测试中,需要在页面中下载一些文件,然后自动保存到目录中。查询了大量的资料,但是能够参见的有限。
测试环境:Ubuntu, Firefox
解决:
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.downloadDir", "/home/jenny/Downloads");
profile.setPreference("browser.download.defaultFolder", "/home/jenny/Downloads");
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream, application/vnd.ms-excel, text/csv, application/zip");
driver = new FirefoxDriver(profile);
我这里设置到保存到默认的目录Downloads.
但是问题来了,发现脚本运行到下载保存的窗口时,始终指向的是打开文件,而不是我所希望的Save to,选项,然后我选择手动选择了Save to, 和第3个选项,以为下次就可以默认选择save to了,但是运行的结果却不是。因为WebDriver driver = new FirefoxDriver(),这样Selenium Server启动的Firefox将是一个全新的,不做了设置的Firefox
解决:使用自定义Firefox Profile运行测试
1.把firefox关了,执行‘firefox -ProfileManager’命令再create profile,这里我新建的profile名字为:selenium
2.打开你要操作的页面,然后设置download的选项,默认设置为Save to选项。
3.在代码中使用如下方式启动FirefoxDriver
ProfilesIni allProfiles = new ProfilesIni();
// "selenium" 是我们之前创建的profile
FirefoxProfile profile = allProfiles.getProfile("selenium");
WebDriver driver = new FirefoxDriver(profile);
这样就解决了。