Cypress 在“get”上的滚动行为和相对定位

Eri*_*rel 6 material-ui cypress

调用 Cypresscy.get方法时,页面会滚动,以便所选元素位于页面顶部。

当其顶部有一个相对定位的粘性工具栏时,这是有问题的,因为它可能会系统地隐藏该元素,从而使进一步的click事件失败。

例如,这可以使用Material UI“仪表板”模板来重现。

知道如何解决这个问题,或者通过修改模板以保持粘性顶部菜单而不相对定位(编辑:实际上标题是绝对定位的),或者设置赛普拉斯在获取元素时稍微偏移滚动?

当然,我可以强制点击,cy.click({force:true})但从长远来看这并不是很好。

小智 8

此滚动逻辑仅适用于上面可操作的命令。cy.get()当使用 DOM 命令(例如或 )时,我们不会将元素滚动到视图中.find()。因为这

在单击命令中禁用滚动

.click({scrollBehavior:false})
Run Code Online (Sandbox Code Playgroud)


小智 1

您可以使用该.pause()方法来查看是否.get()确实滚动了页面。根据文档,使用 时页面永远不会滚动.get(),仅在使用操作命令(如 `.click() source)时才滚动。

仅供参考,有一个更改滚动行为的功能请求。

另外,您可以在每次测试中使用一个厚颜无耻的解决方法:

Cypress.on('scrolled', $el => {
  $el.get(0).scrollIntoView({
    block: 'center',
    inline: 'center'
  });
});
Run Code Online (Sandbox Code Playgroud)