imsobear / blog

果同学的博客
161 stars 9 forks source link

UI 测试之:保证页面滚动到底部 #50

Closed imsobear closed 7 years ago

imsobear commented 9 years ago

现如今,页面内容越来越丰富,多数页面都有滚动加载之类的功能,在做 UI 测试时,无论是用 webdriver,还是单纯的 Phantomjs,只单纯的测试默认加载的 dom 是远远不够的,更完美的做法应该是打开页面后先注入一段保证页面滚动到底部的 js,然后再去运行测试用例。HOW?

/**
 * 保证页面滚动到底部
 */
function scrollToBottom (callback) {

    var TIMES = 10  // 最多滚动10次,防止无限加载
        , INTERVAL = 600  // 每次滚动之间的间隔时间,太短有可能不会触发懒加载事件
        , delta = 1500    // 每次的滚动距离,太长有可能导致之间有的部分未加载
        , preScrollTop = 0  // 滚动前的 window.scrollTop 值
        , curScrollTOp = 0;  // 滚动后的 window.scrollTop 值

    var scroll = function () {
        preScrollTop = $(window).scrollTop();
        TIMES --;
        $(window).scrollTop(preScrollTop + delta);
    };

    scroll();

    var timer = setInterval(function () {

        curScrollTOp = $(window).scrollTop();

        if (TIMES <= 0 || (curScrollTOp - preScrollTop) <= 3 ) {
            // 滚动结束
            clearInterval(timer);
            return callback();
        }

        scroll();

    }, INTERVAL);

}

看似很简单的10多行代码,期间在各种例子下调整了诸多次,当下的版本应该还算稳定准确,诸位可做参考。

以上。