赛普拉斯scrollTo方法的难点

时间蜡

我在使用赛普拉斯测试虚拟滚动组件时遇到一些问题。我有一个测试,可在滚动到容器底部后检查DOM中存在的li元素。

当这样编写时,测试通过:

cy.get('.virtual-scroll').scrollTo('bottom')
cy.wait(0)                                             
cy.get('li').last().children('h4').contains('1999')

当这样写时,它不会:

cy.get('.virtual-scroll').scrollTo('bottom')
cy.get('li').last().children('h4').contains('1999')

这也会失败:

cy.get('.virtual-scroll').scrollTo('bottom').get('li').last().children('h4').contains('1999')

在第二个和第三个示例中,get('li')返回滚动完成之前存在的li元素,因此未通过测试。我可以通过添加.wait来解决此问题,但不能完全理解其行为,不知道这是否是一个错误。

有任何想法吗?

布库拉

做出一个在DOM呈现时始终会通过的断言,例如.get()用于将元素添加到DOM

例如),如果您有<ul class="myloadedlist">....

cy.get('.virtual-scroll').scrollTo('bottom')
cy.get('ul.myloadedlist')
cy.get('li').last().children('h4').contains('1999')

这样,一旦发现该元素,赛普拉斯将继续进行测试。

为什么?

我假设元素以DOM某种滚动方式添加到eventListener在这种情况下,这是正确的行为。

本质上,您测试的是用户非常快速滚动到页面底部竞争状况,以查看尚未完成渲染-有效的Senario。DOM

既然你有针对性的last() li元素,赛普拉斯找到页面的最后一个元素之前DOM得到更新,并预计到contain 1999,它没有,即使在赛普拉斯重试,持续4秒。

实际上,这是赛普拉斯的一项重要功能,因为您可以DOM在用户可能只看到一秒钟的时间下测试的状态

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章