【发布时间】:2016-08-18 22:53:11
【问题描述】:
我正在尝试使用 Selenium 自动下载文件。
每当收到要下载的文件时,我想将该特定文件保存到自定义位置并使用自定义名称保存。
我希望浏览器要求保存每个文件,以便我可以动态提供自定义路径和文件名。
我可以将文件保存到自定义目录,但我无法控制文件名。我想使用java.awt.Robot、java.awt.datatransfer.StringSelection 和java.awt.Toolkit 来使用自定义文件名。
我的代码
ChromeOptions chromeOptions = new ChromeOptions();
HashMap<String, Object> chromePreferences = new HashMap<String, Object>();
chromePreferences.put("profile.default_content_settings.popups", 0);
chromePreferences.put("download.default_directory", browserDownloadDirectoryPath);
chromePreferences.put("safebrowsing.enabled", "true");
chromeOptions.setExperimentalOption("prefs", chromePreferences);
chromeOptions.addArguments("--test-type");
chromeDesiredCapabilities = DesiredCapabilities.chrome();
chromeDesiredCapabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
这是将文件保存到自定义文件夹。
如果浏览器要求保存文件,我想使用机器人类发送路径。
StringSelection stringSelection = new StringSelection(
"<file path>" + "<file name>");
Toolkit.getDefaultToolkit().getSystemClipboard()
.setContents(stringSelection, null);
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_TAB);
robot.keyPress(KeyEvent.VK_DOWN);
robot.keyRelease(KeyEvent.VK_DOWN);
robot.keyPress(KeyEvent.VK_DOWN);
robot.keyRelease(KeyEvent.VK_DOWN);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_TAB);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
请提供强制浏览器要求保存文件的解决方案。
对于 Firefox,我们有 about:config 来查看浏览器的所有首选项。我们是否也为其他浏览器提供了类似的功能?
【问题讨论】:
-
你能检查一下,看看是否有类似的Java对应物。 stackoverflow.com/questions/18954686/…
标签: java selenium browser selenium-webdriver