Ionic 3无限滚动模拟e2e测试茉莉/量角器

时间:2017-11-30 17:51:42

标签: testing ionic2 jasmine protractor ionic3

如果你去这里:http://ionicframework.com/docs/api/components/infinite-scroll/InfiniteScroll/

检查演示并单击列表中的最后一项:

enter image description here

然后在控制台中输入:$0.scrollIntoView()

永远不会触发无限滚动。

有没有办法以编程方式触发量角器上下文中的无限滚动?

2 个答案:

答案 0 :(得分:3)

示例中滚动的实现依赖于滚动的速度/速度,我猜这个滚动速度/速度远远低于调用scrollIntoView时的预期范围。

一种解决方法是通过在合理的时间内发出多个滚动事件来模拟平滑滚动。我们的想法是尽可能地重现真实用户的行为。

某些浏览器已经通过scrollIntoView提供了选项(Chrome 62支持):

$0.scrollIntoView({behavior: "smooth", block: "end"});

答案 1 :(得分:0)

在我的案例中,使用接受的答案,我使用ion-infinite-scroll作为参数。

完成测试以检查Ionic中是否加载了更多内容:

describe('Scroll', () => {
    it('should load more when reached end', async () => {
        let list = getList();

        let currentCount = await list.count();

        const refresher = element(by.tagName('ion-infinite-scroll')).getWebElement();

        let count = 0;

        while(true){
            browser.executeScript(`arguments[0].scrollIntoView({behavior: "smooth", block: "end"});`, refresher);
            browser.sleep(1000); // wait for data to be loaded from api
            list = getList();
            let newCount = await list.count();
            expect(newCount).toBeGreaterThanOrEqual(currentCount)
            expect(newCount).toBeLessThanOrEqual(currentCount * 2)
            if(newCount === currentCount){
                break;
            }
            currentCount = newCount;
            count++;
        }

        expect(count).toBeGreaterThan(0);
    })
});

function getList() {
    return element(by.className(pageId + ' list')).all(by.tagName('ion-item'));
}