我正在使用selenium来测试系统。
我必须下载一个文本文件。为了直接下载,我创建了一个Firefox配置文件,它应该避免Save / cancel
对话框...但是对话框仍然会出现。
我的代码如下:
FirefoxProfile fxProfile = new FirefoxProfile();
fxProfile.setPreference("browser.download.folderList",2);
fxProfile.setPreference("browser.download.manager.showWhenStarting",false);
fxProfile.setPreference("browser.download.dir","c:\\tmp");
fxProfile.setPreference("browser.helperApps.alwaysAsk.force", false);
fxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk","text/plain");
driver.findElement(By.id("link-download")).click();
我无法找到对话框仍然打开的原因。 有什么想法吗?
提前致谢。
答案 0 :(得分:5)
我明白了。
创建驱动程序时,必须将Firefox配置文件作为参数传递,如下所示:
FirefoxProfile fxProfile = new FirefoxProfile();
fxProfile.setPreference("browser.download.folderList", 2);
fxProfile.setPreference("browser.download.manager.showWhenStarting", false);
fxProfile.setPreference("browser.download.dir","c:\\tmp");
fxProfile.setPreference("browser.helperApps.alwaysAsk.force", false);
fxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream");
setDriver(TestBench.createDriver(new FirefoxDriver(fxProfile)));
我在没有参数的情况下创建驱动程序。现在它正在发挥作用。
答案 1 :(得分:3)
在我的情况下,我需要另一个偏好来使其正常工作,启用Javascript也很有趣。
File downloadDir = new File(DOWNLOAD_PATH);
FirefoxProfile fProfile = new FirefoxProfile();
fProfile.setAcceptUntrustedCertificates(true);
fProfile.setPreference("browser.download.dir", downloadDir.getAbsolutePath());
fProfile.setPreference("browser.download.folderList", 2);
fProfile.setPreference("browser.download.manager.showWhenStarting", false);
fProfile.setPreference("browser.helperApps.alwaysAsk.force", false);
fProfile.setPreference("browser.helperApps.neverAsk.saveToDisk", "text/plain");
DesiredCapabilities dc = DesiredCapabilities.firefox();
dc.setJavascriptEnabled(true);
dc.setCapability(FirefoxDriver.PROFILE, fProfile);
driver = new FirefoxDriver(dc);
答案 2 :(得分:-1)
您可以下载所有文件(例如:.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");