【问题标题】:Testing download links with Nightwatch.js使用 Nightwatch.js 测试下载链接
【发布时间】:2014-06-23 15:54:52
【问题描述】:

我正在尝试使用 Nightwatch.js 构建自动化测试,以验证软件下载链接是否正常工作。我不想下载这些文件,因为它们很大,我只想验证相应的链接是否返回了 200 HTTP 响应,以确保链接指向正确的位置。

有什么方法可以使用 Nightwatch.js 测试可下载文件的链接吗?

这是我目前拥有的:

/**
 * Test Software Downloads
 * 
 * Verify that software downloads are working 
 */

module.exports = {
    "Download redirect links": function (browser) {

        // download links
        var downloadLinks = {
            "software-download-latest-mac": "http://downloads.company.com/mac/latest/",
            "software-download-latest-linux": "http://downloads.company.com/linux/latest/",
            "software-download-latest-win32": "http://downloads.company.com/windows/32/latest/",
            "software-download-latest-win64": "http://downloads.company.com/windows/64/latest/"
        };

        // loop through download links
        for (var key in downloadLinks) {
            if (downloadLinks.hasOwnProperty(key)) {

                // test each link's status
                browser
                    .url(downloadLinks[key]);
            }
        }

        // end testing
        browser.end();
    }
};

【问题讨论】:

    标签: javascript selenium nightwatch.js


    【解决方案1】:
    1. 使用节点http 模块并发出“HEAD”请求
    2. 例如:断言文件大小

    test.js

    var http = require("http");
    
    module.exports = {
      "Is file avaliable" : function (client) {
        var request = http.request({
            host: "www.google.com",
            port: 80,
            path: "/images/srpr/logo11w.png",
            method: "HEAD"
        }, function (response) {
          client
            .assert.equal(response.headers["content-length"], 14022, 'Same file size');
          client.end();
        }).on("error", function (err) {
          console.log(err);
          client.end();
        }).end();
      }
    };
    

    参考文献

    【讨论】:

    • 这个解决方案在大多数情况下应该很好,但是如果浏览器是通过远程 webdriver 服务器驱动的和/或下载链接仅在各种会话 cookie、IP 地址或网络访问时有效怎么办要求是否满足?这对于使用实际浏览器检查链接是否有效的解决方案很有用。 (如果 webdriver 协议支持的话。)
    • @OttoG 你可以在无头模式下对puppeteer 做同样的事情
    猜你喜欢
    • 2015-04-02
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    相关资源
    最近更新 更多