下载文件存储位置和处理使用带有JAVA的selenium webdriver下载弹出窗口

时间:2014-01-21 10:22:56

标签: java selenium download

请提出以下几点实施的想法

1.如何使用Selenium Webdriver和JAVA一起处理IE中的下载弹出窗口? want to save that Xml file

2.如何使用JAVA将xml文件存储在不同的位置?

注意:我们将传递'n'个输入,每个输入都有一个xml文件,需要所有xml文件下载并保存在不同的位置

2 个答案:

答案 0 :(得分:9)

我建议你不要使用selenium自动下载文件。这是一个你不想堕落的陷阱。文件下载在不同的浏览器中有不同的人们会建议使用AutoIT,但它只适用于Windows,因此无法进行跨平台测试。由于您使用Java绑定,因此可以使用Robot类将鼠标指针移动到窗口上的某个位置并发送本机单击。根据我的经验,这个解决方案真的很不稳定。你不知道你必须点击的确切位置,而你正在盲目地点击东西。除此之外,当您使用selenium网格在远程计算机上运行测试时,事情变得更加困难。

那么你如何下载文件?只需获取底层链接即可下载DOM中可用的文件并触发GET请求。如果要验证文件,请下载内容。如果您不想验证内容,只需回复代码即可。 Here是一个很棒的博客,上面有关于如何使用http请求在后台下载文件的Java示例,以及有关使用selenium下载文件的原因的详细说明。

答案 1 :(得分:0)

在初始化驱动程序对象之前,尝试在DesiredCapabilityObject中设置以下首选项集 -

File ffProfileFolder = new File("." + File.separator + "src" + File.separator
                    + "test" + File.separator + "resources" + File.separator + "FFProfiles" + File.separator + "AutoUser" + File.separator);
File workspacePath = new File(".."+File.separator);
String workspaceCanPath = workspacePath.getCanonicalPath();
String downloadDir = workspaceCanPath+File.separator+"Downloads";
OSInteractions.createDir(downloadDir);

profileAutoUser.setPreference("browser.download.manager.showWhenStarting",false);
profileAutoUser.setPreference("browser.download.dir",downloadDir);
profileAutoUser.setPreference("browser.download.defaultFolder",downloadDir);
profileAutoUser.setPreference("browser.download.lastDir",downloadDir);
profileAutoUser.setPreference("browser.download.folderList",2);
profileAutoUser.setPreference("browser.download.useDownloadDir",true);
profileAutoUser.setPreference("browser.helperApps.neverAsk.saveToDisk","application/octet-stream,application/msexcel");

DesiredCapabilities capFF = DesiredCapabilities.firefox();
capFF.setCapability(FirefoxDriver.PROFILE, profileAutoUser);


driver = new FirefoxDriver(profileAutoUser);

请注意,这仅适用于FF。