用于下载 pdf 文件的 Protractor e2e 测试用例

用于下载 pdf 文件的 Protractor e2e 测试用例

问题描述:

谁能告诉我如何为使用 jasmine 框架下载 pdf 文件的链接编写测试用例?提前致谢.

Can anyone tell me how to write test case for a link to download pdf file using jasmine framework ? Thanks in advance.

我目前可以设置下载路径位置

I can currently set download path location

capabilities: {
    'browserName': 'chrome',
    'platform': 'ANY',
    'version': 'ANY',
    'chromeOptions': {
        // Get rid of --ignore-certificate yellow warning
        args: ['--no-sandbox', '--test-type=browser'],
        // Set download path and avoid prompting for download even though
        // this is already the default on Chrome but for completeness
        prefs: {
            'download': {
                'prompt_for_download': false,
                'default_directory': '/e2e/downloads/',
            }
        }
    }
}

对于远程测试,您需要更复杂的基础设施,例如设置 Samba 共享或网络共享目录目标.

For remote testing you would need a more complex infrastructure like setting up a Samba share or network shared directory destination.


var FirefoxProfile = require('firefox-profile');
var q = require('q');

[...]
getMultiCapabilities: getFirefoxProfile,
framework: 'jasmine2',

[...]
function getFirefoxProfile() {
    "use strict";
    var deferred = q.defer();
    var firefoxProfile = new FirefoxProfile();
    firefoxProfile.setPreference("browser.download.folderList", 2);
    firefoxProfile.setPreference("browser.download.manager.showWhenStarting", false);
    firefoxProfile.setPreference("browser.download.dir", '/tmp');
    firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");

    firefoxProfile.encoded(function(encodedProfile) {
        var multiCapabilities = [{
            browserName: 'firefox',
            firefox_profile : encodedProfile
        }];
        deferred.resolve(multiCapabilities);
    });
    return deferred.promise;
}

最后,也许很明显,如您所知,要触发下载,请点击下载链接,例如

Finally and maybe obvious, to trigger the download you click on the download link as you know, e.g.

$('a.some-download-link').click();