Selenium WebDriver - 在Firefox上自动下载

时间:2015-10-22 15:25:02

标签: java firefox selenium selenium-webdriver download

我尝试使用Java中的Selenium WebDriver自动从Firefox下载。 不幸的是,我已经找到了很多答案,但这在我的代码中并没有起作用。

我试过

Desc 3 : ujeuejduejtest test Card#9999
Desc 3 : 2323fseff dsftest Card#9999
Desc 3 : sdfsd fsdsdf kkkk Card#9999

但不可能工作! 我尝试下载的文件类型是CSV Excel文件。

在Mozilla>选项>应用程序中,尽管我添加了setPreference,但任何自动化都是可见的。

就在此之前,我刚刚添加了

profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.download.manager.showWhenStarting", false);
profile.setPreference("browser.download.dir", "D:\\");
profile.setPreference("browser.helperApps.neverAsk.openFile","application/msword, application/csv, application/ris, text/csv, image/png, application/pdf, text/html, text/plain, application/zip, application/x-zip, application/x-zip-compressed, application/download, application/octet-stream");
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/msword, application/csv, application/ris, text/csv, image/png, application/pdf, text/html, text/plain, application/zip, application/x-zip, application/x-zip-compressed, application/download, application/octet-stream");

因为我的公司有代理,但这次是在Mozilla>选项>互联网设置中,我添加的代理规则是可见的。

3 个答案:

答案 0 :(得分:0)

我很久以前遇到过同样的问题,从你的代码中我看到了两种可能性:

  1. MIME类型不在列表中:
  2. 如果您想要每个应用程序的列表,请检查this site,也许您应该也包含excel文件的MIME类型。例如:

    application/excel
    application/vnd.ms-excel
    
    1. 完全禁用browser.helperApps选项:
    2. 将以下选项添加到Firefox配置文件中,它将确保您禁用下载对话框。

      profile.set_preference('browser.helperApps.alwaysAsk.force', False)
      

答案 1 :(得分:0)

非常感谢你的回答,我看到我并不孤单,这个问题,但似乎经常为人们工作...... 我试图添加你的代码,但没有区别。

可能问题来自计算机设置?

继续出现的弹出窗口: Download Popup Firefox

应该出现的应用规则(当然):csv automated donwload

顺便说一句,应用程序选项中的任何规则都会显示着名的profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/msword, application/csv, application/ris, text/csv, image/png, application/pdf, text/html, text/plain, application/zip, application/x-zip, application/x-zip-compressed, application/download, application/octet-stream, application/excel, application/vnd.ms-excel"); 我不知道是不是应该。

我得到的最后一个想法是手动创建一个配置文件并在启动firefox浏览器时获取它,但我真的不知道它是否可能,知道我正在制作的应用程序必须在连接到VPN的任何计算机上工作。 / p>

再次感谢您的帮助,如果有人认为有解决方案,那就太棒了!

答案 2 :(得分:0)

在这种情况下,没有不同的方式, 创建Firfox配置文件进入Run Command

<script type="text/ng-template" id="secondTemplate">
<div ng-controller="sendUploadDetailsCtrl">
    <div class="modal-header">
        <h3>Please enter Group name!</h3>
    </div>
    <div class="modal-body">
        <div>{{filePath}}</div>
        <input type="text" name="groupName" id="groupName" ng-model="uploadGroupName" required />
    </div>
    <div class="modal-footer">
        <button class="btn btn-primary" ng-click="ok()">Submit</button>
        <button class="btn btn-warning" ng-click="cancel()">Cancel</button>
    </div>

它会要求您创建新的个人资料并启动该个人资料(请参阅https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles),手动尝试下载该文件,弹出窗口时只需检查自动下载,

然后在硒代码中添加配置文件

firefox.exe -P

尝试运行代码现在它将自动下载内容而不需要任何弹出窗口。