Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用带JAVA的selenium webdriver下载文件存储位置和处理下载弹出窗口_Java_Selenium_Download - Fatal编程技术网

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

使用带JAVA的selenium webdriver下载文件存储位置和处理下载弹出窗口,java,selenium,download,Java,Selenium,Download,请就以下几点提出建议 1.如何使用Selenium Webdriver和JAVA处理IE中的下载弹出窗口? 2.如何使用JAVA将xml文件存储在不同的位置 注意:我们将传递“n”个输入,每个输入都有一个xml文件,需要下载所有xml文件并保存在不同的位置我建议您不要使用selenium自动下载文件。这是一个你不想上当的陷阱。文件下载在不同浏览器中的工作方式不同。人们会建议使用AutoIT,但它只适用于windows,因此不可能进行跨平台测试。由于您使用Java绑定,因此可以使用Robot类将

请就以下几点提出建议

1.如何使用Selenium Webdriver和JAVA处理IE中的下载弹出窗口?

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


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

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


那么如何下载该文件呢?只需获取底层链接,下载DOM中可用的文件,并发出get请求。如果要验证文件,请下载内容。如果不想验证内容,只需响应代码即可。是一个很棒的博客,其中有Java示例,介绍了如何使用http请求在后台下载文件,并详细解释了为什么使用selenium下载文件是个坏主意。

在初始化驱动程序对象之前,请尝试在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。

请查看我在这一趋势中的答案。但是如何处理IE?