Closed imsobear closed 7 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多行代码,期间在各种例子下调整了诸多次,当下的版本应该还算稳定准确,诸位可做参考。
以上。
现如今,页面内容越来越丰富,多数页面都有滚动加载之类的功能,在做 UI 测试时,无论是用 webdriver,还是单纯的 Phantomjs,只单纯的测试默认加载的 dom 是远远不够的,更完美的做法应该是打开页面后先注入一段保证页面滚动到底部的 js,然后再去运行测试用例。HOW?
看似很简单的10多行代码,期间在各种例子下调整了诸多次,当下的版本应该还算稳定准确,诸位可做参考。
以上。