如何处理在selenium webdriver中下载文件?

我是selenium新手,我已经分配了一个任务来执行下面提到的情况。

场景:对于给定的URL,我需要进入一个有多个链接的网页。 而链接可能有pdf或者HTML文件。 我需要通过单击链接下载文件,并通过在Excel表单中input链接引用进行pipe理。

所以我的任务有两个挑战:
1)如何处理XL表input值作为input。
2)如何使用selenium下载PDF文件

请帮我find任何网站,我可以在哪里下载一个文件

谢谢

Apache POI。 http://www.toolsqa.com/selenium-webdriver/data-driven-testing-excel-poi/

如果你使用Firefox

使用Firefoxconfiguration文件下载您的文件。 这个configuration文件跳过Firefox的对话框。 一致:-

pro.setPreference("browser.downLoad.folderList", 0); 

browser.download.folderList的值可以设置为0,1或2.当设置为0时,Firefox会将通过浏览器下载的所有文件保存在用户的桌面上。 设置为1时,这些下载将存储在Downloads文件夹中。 设置为2时,将再次使用为最近下载指定的位置。

您需要实现的Firefoxconfiguration文件代码: –

  FirefoxProfile pro=new FirefoxProfile(); pro.setPreference("browser.downLoad.folderList", 0); pro.setPreference("browser.helperApps.neverAsk.saveToDisk", "Applications/zip"); WebDriver driver=new FirefoxDriver(pro); driver.get("http://selenium-release.storage.googleapis.com/2.47/selenium-java-2.47.1.zip"); 

希望它会帮助你:)

1a)你应该试试JExcelApi: http : //jexcelapi.sourceforge.net/

1b)另一个想法是使用Apache POI。 你可以find例子: http : //poi.apache.org/spreadsheet/how-to.html#sxssf

2)要下载PDF文件,你可以试试这个Selenium代码(用Java编写):

 FirefoxProfile profile = new FirefoxProfile(); WebDriver driver = new FirefoxDriver(profile); profile.setPreference("browser.helperapps.neverAsk.saveToDisk" , "application/octet-stream;application/pdf"); 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:\\savedPDFs"); 

当你点击一个链接(可能有pdf文件),PDF文件将被自动下载到给定的文件夹(不popup)

尝试下面的代码

 FirefoxProfile profile = new FirefoxProfile(); String path = "D:\\Downloads_sel"; profile.setPreference("browser.download.folderList", 2); profile.setPreference("browser.download.dir", path); profile.setPreference("browser.download.alertOnEXEOpen", false); profile.setPreference("browser.helperApps.neverAsksaveToDisk", "application/x-msexcel,application/excel,application/x-excel,application/excel,application/x-excel,application/excel,application/vnd.ms-excel,application/x-excel,application/x-msexcel"); profile.setPreference("browser.download.manager.showWhenStarting", false); profile.setPreference("browser.download.manager.focusWhenStarting", false); profile.setPreference("browser.helperApps.alwaysAsk.force", false); profile.setPreference("browser.download.manager.alertOnEXEOpen", false); profile.setPreference("browser.download.manager.closeWhenDone", false); profile.setPreference("browser.download.manager.showAlertOnComplete", false); profile.setPreference("browser.download.manager.useWindow", false); profile.setPreference("browser.download.manager.showWhenStarting", false); profile.setPreference("services.sync.prefs.sync.browser.download.manager.showWhenStarting", false); profile.setPreference("pdfjs.disabled", true); WebDriver driver = new FirefoxDriver(profile); 

有关完整的MIMEtypes列表,请点击以下链接: http : //qaautomationworld.blogspot.in/2014/02/file-downlaoding-using-selenium.html

这个问题已经被问过几次了,但是我使用MetaModel Apache API来读写Excel。 它允许我使用SQL语法来查询Excel。 我在我的GitHub帐户中做了一个这样的示例项目,如果你能find它的话。

另外,为了使用Seleniumtesting下载文件,我只需要这样做:

  1. Use selenium to get the file download hyperlink. 2. Use Apache HttpUtils to download the file. Don't use the browser to do it. 

经过一些本地调查,如何在没有任何另存为popup窗口的情况下在Firefox下载PDF文件,我发现Firefox中的最低需求偏好:

 profile.setPreference("pdfjs.disabled", true); profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream;application/pdf"); 

你可以给一些额外的偏好。 它适用于Firefox 45-46版本。