报告应用程序有一个Export to Excel
链接,点击后会打开一个类似于下图所示的操作系统弹出窗口。
Internet Explorer
火狐
我需要点击Save As
(IE)或Save File
(FF)按钮,然后在'另存为'中提供我需要的路径。弹出窗口并保存文件。我了解driver.getWindowHandle()
功能,但我无法使用此方法处理操作系统弹出窗口。
如果Selenium或Java中有任何浏览器在上述任何浏览器中处理操作系统弹出窗口,请告诉我。
编辑:我认为this question的答案仅限于Firefox。我正在寻找的是处理这种本地操作系统弹出窗口的解决方案,适用于所有浏览器(至少在IE,Chrome和Firefox中)
答案 0 :(得分:0)
您需要使用Firefox分析来克服此问题: -
FirefoxProfile pro=new FirefoxProfile();
pro.setPreference("browser.downLoad.folderList", 0);
pro.setPreference("browser.helperApps.neverAsk.saveToDisk", "Applications/zip");
WebDriver driver=new FirefoxDriver(pro);
browser.download.folderList控制下载的默认文件夹 档案到。 0表示桌面; 1表示系统默认 下载位置; 2表示自定义文件夹。
browser.download.dir包含
的自定义目标文件夹
下载。如果是browser.download.folderList,则激活它
设为2。
browser.helperApps.neverAsk.saveToDisk存储以逗号分隔的列表 MIME类型保存到磁盘而不询问使用什么来打开 文件
下面是chrome多重下载选项的代码: -
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("profile.default_content_settings.popups", 0);
prefs.put("download.default_directory", getClass().getResource("/data/input").toString().replace("%20", " ").replace("file:","").replaceFirst("/", ""));
options.setExperimentalOption("prefs", prefs);
options.addArguments("--test-type");
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
对于IE,请参阅: -
http://9to5it.com/internet-explorer-disable-do-you-want-to-open-or-save-this-file-prompt/
您也可以使用Robot类的java,但它可以锁定您的屏幕
您需要使用ROBOT类来触发ENTER Action事件。在java中,如果要激活任何事件,则必须使用Robot类以编程方式键入或触发ENTER和ESCAPE等事件。
// Create object of Robot class
Robot object=new Robot();
// Press Enter
object.keyPress(KeyEvent.VK_ENTER);
// Release Enter
object.keyRelease(KeyEvent.VK_ENTER);
希望它会对你有所帮助:)。
如果仍然面临问题,请回复我:)
答案 1 :(得分:0)
我认为上述答案仅在我们必须在本地计算机上保存文件/下载文件时才有用。操作系统的本机对话框(如“另存为”,“打开”)不受selenium Web驱动程序的控制。 我使用 AutoIT (仅适用于Windows操作系统)来处理特定于Windows的弹出窗口。 您可以参考AutoIT进行初步了解。 因此,在此处,当您单击任何将处理进一步操作系统特定操作的Web元素时调用autoIT脚本,例如保存文件,浏览要上载的文件等。
答案 2 :(得分:0)
尝试以下代码。它对我有用:
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.helperApps.neverAsk.saveToDisk",
"application/octet-stream;application/csv;text/csv;application/vnd.ms-excel;");
profile.setPreference("browser.helperApps.alwaysAsk.force", false);
profile.setPreference("browser.download.manager.showWhenStarting", false);
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.download.dir", "C:\\SampleExcel");
driver = new FirefoxDriver(profile);
享受:)