【问题标题】:Selenium + Protractactor: Downloading file in chrome & firefoxSelenium + Protractactor:在 chrome 和 firefox 中下载文件
【发布时间】:2020-08-10 22:01:23
【问题描述】:

我一直在尝试更新我的 conf.js 文件以下载文件,它应该适用于 firefox 和 chrome(彼此独立)。

我一直在线关注指南和答案(包括但不限于 stackoverflow),但它并不完全适合我。 Chrome 没问题,firefox 是我的麻烦。

在 Firefox 上,它根本不下载文件,这与下载文件的 chrome 不同。

更新:我无法禁用 Firefox 的弹出窗口

来自 conf.js 的相关信息

exports.config = {
[...]
 multiCapabilities: [
    {
      browserName: 'chrome',
      'goog:chromeOptions': {
        w3c: false, // problems with latest chrome driver... browser.actions is causing issues: https://github.com/jan-molak/serenity-js/issues/329
        prefs: {
          download: {
            prompt_for_download: false,
            directory_upgrade: true,
            default_directory: downloadsPath,
          },
        },
      },
    } , 
    {
      browserName: 'firefox',
      'goog:chromeOptions': {
        marionette: true,
        'moz:firefoxOptions': {
          prefs: {
            'pdfjs.disabled': true,
            'browser.download.folderList': 2,
            'browser.download.dir': downloadsPath,
            'browser.download.panel.shown': false,
            'browser.download.useDownloadDir': true,
            'browser.download.manager.useWindow': false,
            'browser.helperApps.alwaysAsk.force': false,
            'browser.helperApps.neverAsk.openFile': true,
            'browser.download.manager.closeWhenDone': false,
            'browser.download.manager.alertOnEXEOpen': false,
            'browser.download.manager.showWhenStarting': false,
            'browser.download.manager.focusWhenStarting': false,
            'browser.download.manager.showAlertOnComplete': false,
            'browser.helperApps.neverAsk.saveToDisk': 'application/vnd.openxmlformats',
          },
        },
      },
    },
  ],
[...]
};

我的 dowload-e2e.js 规范中的相关代码:

    const downloadBtn = manipulations.getDomObject('download-contract-button', 'id');
    browser.executeScript('arguments[0].click();', downloadBtn.getWebElement());

    try {
      await downloads.verifyFileExists(`file-name.docx`);
      await downloads.verifyFileSize(`file-name.docx`, 0);
    } catch (err) {
      throw new Error(`ERROR: ${err.message}`);
    }
    downloads.removeFile(`file-name.docx`);

【问题讨论】:

    标签: javascript selenium selenium-webdriver firefox protractor


    【解决方案1】:

    Firefox/Chrome 试试这样:

    const multiCapabilities = [
    {
        browserName: 'chrome',
        'goog:chromeOptions': {
            w3c: false, // due problems with latest chrome driver
                        // browser.actions is causing issues: https://github.com/jan-molak/serenity-js/issues/329
            prefs: {
                download: {
                    'prompt_for_download': false,
                    'directory_upgrade': true,
                    'default_directory': downloadsPath
                }
            }
        }
    },
    {
        browserName: 'firefox',
        'goog:chromeOptions': {
            marionette: true,
            'moz:firefoxOptions': {
                prefs: {
                    'browser.download.folderList': 2,
                    'browser.download.dir': downloadsPath,
                    'browser.download.manager.showWhenStarting': false,
                    'browser.helperApps.alwaysAsk.force': false,
                    'browser.download.manager.useWindow': false,
                    'browser.helperApps.neverAsk.saveToDisk':   'application/octet-stream, application/json, ' +
                                                                'text/comma-separated-values, text/csv, application/csv, ' +
                                                                'application/excel, application/vnd.ms-excel, ' +
                                                                'application/vnd.msexcel, text/anytext, text/plaintext, ' +
                                                                'image/png, image/pjpeg, image/jpeg, application/zip'
                }
            }
        }
    }
    

    ];

    【讨论】:

    • 感谢 chrome 的提示,但这会解决 firefox 下载文件的问题吗?
    • 我没听懂,这是您要求的 chrome 设置,firefox 功能是另一个对象。
    • 标题说的是firefox和chrome,我在描述中提到了firefox和chrome。我提供了我的代码,它不能完全工作,问它有什么问题。我确实明确了我的麻烦是什么
    • 还添加了 Firefox 解决方案
    • 我已经对thinkbroadband.com/download 进行了测试,它下载了文件,请提供信息您要下载的内容或网站的其他内容或您想要达到的结果。这是一个有效的配置,但对于某些原因它对您不起作用,在这种情况下,任何其他信息都会很好。
    猜你喜欢
    • 2019-02-05
    • 2017-12-26
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 2016-08-12
    • 2019-08-30
    • 2022-10-18
    • 2013-01-05
    相关资源
    最近更新 更多