我是selenium的新手,我被分配了一个任务来实现下面提到的场景。
场景:对于给定的URL,我需要进入一个具有多个链接的网页。并且链接可以包含pdf或HTML文件。 我需要通过单击该链接来下载文件,并且应该通过在Excel工作表中输入链接参考进行管理。
所以我的任务有两个挑战:
1)如何处理XL sheet输入的值作为输入
2)如何使用selenium下载pdf文件
请帮我找到任何网站,我可以在哪里下载文件
由于
答案 0 :(得分:1)
Apache POI。 http://www.toolsqa.com/selenium-webdriver/data-driven-testing-excel-poi/
如果您使用的是Firefox
使用firefox配置文件下载文件。这个配置文件跳过firefox的dialoge框。 在线: -
pro.setPreference("browser.downLoad.folderList", 0);
browser.download.folderList的值可以设置为0,1或2.设置为0时,Firefox会将通过浏览器下载的所有文件保存在用户桌面上。设置为1时,这些下载内容存储在“下载”文件夹中。设置为2时,将再次使用为最近下载指定的位置。
您需要实施的Firefox个人资料代码: -
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");
希望它会对你有所帮助:)。
答案 1 :(得分:0)
1a)你应该试试JExcelApi:http://jexcelapi.sourceforge.net/
1b)另一个想法是使用Apache POI。您可以找到示例: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文件将自动下载到指定的文件夹中(无弹出窗口)
答案 2 :(得分:0)
尝试以下代码
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);
有关完整的MIME类型列表,请点击以下链接:http://qaautomationworld.blogspot.in/2014/02/file-downlaoding-using-selenium.html
答案 3 :(得分:0)
此问题曾在几次之前被问过,但我使用MetaModel Apache api进行读取和写入Excel。它允许我使用类似SQL的语法查询Excel。如果你能找到它,我在我的GitHub帐户中做了一个示例项目。
另外,为了使用Selenium测试下载文件,我只需这样做:
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.
答案 4 :(得分:0)
经过一些本地调查,如何在没有任何另存为弹出窗口的情况下在firefox中下载pdf文件,我在firefox配置文件中找到了所需的最低优先级:
profile.setPreference("pdfjs.disabled", true);
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream;application/pdf");
的cource你可以有一些额外的偏好。 它适用于Firefox 45-46版本。