Skip to main content
Cypress应用

scrollTo

滚动到指定位置。

.scrollTo() 之后继续链式调用依赖该目标对象的命令是不安全的

语法

cy.scrollTo(position)
cy.scrollTo(x, y)
cy.scrollTo(position, options)
cy.scrollTo(x, y, options)

// ---或---

.scrollTo(position)
.scrollTo(x, y)
.scrollTo(position, options)
.scrollTo(x, y, options)

用法

正确用法

cy.scrollTo(0, 500) // 将窗口向下滚动 500px
cy.get('.sidebar').scrollTo('bottom') // 将 'sidebar' 滚动到底部

错误用法

cy.title().scrollTo('My App') // 错误,'title' 不返回 DOM 元素

参数

position (String)

要滚动窗口或元素到的指定位置。有效位置包括 topLefttoptopRightleftcenterrightbottomLeftbottombottomRight

cypress-command-positions-diagram

x (Number, String)

距离窗口/元素左侧的像素距离或窗口/元素宽度的百分比。

y (Number, String)

距离窗口/元素顶部的像素距离或窗口/元素高度的百分比。

options (Object)

传入一个选项对象以更改 cy.scrollTo() 的默认行为。

选项默认值描述
duration0滚动的持续时间(毫秒)
easingswing使用缓动动画滚动
ensureScrollabletrue确保元素可滚动。如果元素无法滚动则报错。
logtrue命令日志中显示该命令
timeoutdefaultCommandTimeout等待 .scrollTo() 解析的超时时间

生成结果 了解主题管理

  • .scrollTo() 返回与传入时相同的目标对象。
  • .scrollTo() 之后继续链式调用依赖该目标对象的命令是不安全的

示例

位置

滚动到窗口底部

cy.scrollTo('bottom')

滚动到列表中央

cy.get('#movies-list').scrollTo('center')

坐标

将列表向下滚动 500px

cy.get('#infinite-scroll-list').scrollTo(0, 500)

将窗口向右滚动 500px

cy.scrollTo('500px')

滚动到元素高度的 25% 处

cy.get('.user-photo').scrollTo('0%', '25%')

选项

使用线性缓动动画滚动

cy.get('.documentation').scrollTo('top', { easing: 'linear' })

在 2000ms 内滚动到右侧

cy.get('#slider').scrollTo('right', { duration: 2000 })

如果元素不可滚动则不报错

假设我们不知道 table 元素是否可滚动。有时 table 可能是可滚动的(有 2,000 行),有时 table 可能不可滚动(只有 5 行)。可以通过传递 ensureScrollable: false 来忽略元素是否可滚动的检查。

// 即使表格不可滚动也会继续执行下一条命令
cy.get('table').scrollTo('bottom', { ensureScrollable: false })
cy.get('table').find('tr:last-child').should('be.visible')

注意事项

可操作性

cy.scrollTo() 是一个“操作命令”,遵循可操作性的所有规则。

作用域

cy.scrollTo() 的行为取决于它是作为命令序列的起点还是被链式调用。

作为命令序列的起点时:

这会滚动 window

cy.scrollTo('bottom')

被链式调用时:

这会滚动 <#checkout-items> 元素。

cy.get('#checkout-items').scrollTo('right')

快照

快照不反映滚动行为

Cypress 不会在快照中准确反映任何元素的滚动位置。 如果想查看实际的滚动行为,建议使用 .pause() 逐步执行每个命令,或观看测试运行的视频

规则

要求 了解命令链

  • .scrollTo() 需要链式调用一个返回 DOM 元素的命令。
  • .scrollTo() 要求元素可滚动。

超时设置 了解超时机制

  • .scrollTo() 可能会在等待你添加的断言通过时超时。

命令日志

滚动到窗口底部,然后将元素滚动到“右侧”

cy.scrollTo('bottom')
cy.get('#scrollable-horizontal').scrollTo('right')

上述命令将在命令日志中显示为:

command log for scrollTo

当点击命令日志中的 scrollTo 时,控制台会输出以下内容:

console.log for scrollTo

历史

版本变更
4.11.0添加了对 ensureScrollable 选项的支持。

另请参阅