Skip to main content
Cypress应用

rightclick

右键点击一个DOM元素。

.rightclick()之后继续链式调用依赖该主题的命令是不安全的

caution

.rightclick()不会打开浏览器原生的上下文菜单。.rightclick()应用于测试应用对右键点击相关事件(如contextmenu)的处理。

语法

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

用法

正确用法

cy.get('.menu').rightclick() // 右键点击.menu
cy.focused().rightclick() // 右键点击获得焦点的元素
cy.contains('Today').rightclick() // 右键点击第一个包含'Today'的元素

错误用法

cy.rightclick('button') // 错误,不能链式调用'cy'
cy.window().rightclick() // 错误,'window'不返回DOM元素

参数

position (String)

右键点击的位置。默认位置是center。有效位置包括topLefttoptopRightleftcenterrightbottomLeftbottombottomRight

cypress-command-positions-diagram

x (Number)

距离元素左侧的像素数,用于指定右键点击的位置。

y (Number)

距离元素顶部的像素数,用于指定右键点击的位置。

options (Object)

传入一个选项对象以改变.rightclick()的默认行为。

选项默认值描述
altKeyfalse激活alt键(Mac上是option键)。别名:optionKey
animationDistanceThresholdanimationDistanceThreshold元素随时间必须超过的像素距离,以被视为动画
ctrlKeyfalse激活control键。别名:controlKey
forcefalse强制执行操作,禁用等待可操作性
logtrue命令日志中显示命令
metaKeyfalse激活meta键(Windows键或Mac上的command键)。别名:commandKeycmdKey
multiplefalse依次点击多个元素
scrollBehaviorscrollBehavior在执行命令前,元素应滚动到的视口位置
shiftKeyfalse激活shift键。
timeoutdefaultCommandTimeout等待.rightclick()解析的超时时间
waitForAnimationswaitForAnimations是否在执行命令前等待元素完成动画

生成结果 了解主题管理

  • .rightclick()返回与给定主题相同的主题。
  • .rightclick()之后继续链式调用依赖该主题的命令是不安全的

示例

无参数

右键点击菜单

cy.get('#open-menu').rightclick()

位置

指定元素的角落进行右键点击

右键点击DOM元素的右上角。

cy.get('#open-menu').rightclick('topRight')

坐标

指定相对于左上角的明确坐标

下面的右键点击将在元素内部执行(距离左侧15px,距离顶部40px)。

cy.get('#open-menu').rightclick(15, 40)

选项

强制右键点击,无论其可操作性状态如何

强制右键点击会覆盖Cypress应用的可操作性检查,并自动触发事件。

cy.get('#open-menu').rightclick({ force: true })

使用位置参数强制右键点击

cy.get('#open-menu').rightclick('bottomLeft', { force: true })

使用相对坐标强制右键点击

cy.get('#open-menu').rightclick(5, 60, { force: true })

右键点击页面上找到的所有按钮

默认情况下,Cypress会在尝试右键点击多个元素时报错。通过传递{ multiple: true },Cypress会依次对每个元素应用右键点击,并会在命令日志中多次记录。

cy.get('.open-menu').rightclick({ multiple: true })

使用组合键进行右键点击

.rightclick()命令也可以与键修饰符一起触发,以模拟在右键点击时按住组合键,例如ALT + 右键点击

info

你也可以在.type()中使用组合键。这提供了在多个命令中按住键的选项。更多信息请参见键组合

以下键可以通过options.rightclick()组合使用。

选项说明
altKey激活alt键(Mac上是option键)。别名:optionKey
ctrlKey激活control键。别名:controlKey
metaKey激活meta键(Windows键或Mac上的command键)。别名:commandKeycmdKey
shiftKey激活shift键。
命令右键点击
// 在.menu-item上执行CMD + 右键点击
cy.get('.menu-item').rightclick({
metaKey: true,
})

注意事项

可操作性

元素必须首先达到可操作性

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

规则

要求 了解命令链

  • .rightclick()需要链式调用一个返回DOM元素(s)的命令。

断言 了解断言

  • .rightclick()会自动等待元素达到可操作状态
  • .rightclick()会自动重试,直到所有链式断言通过。

超时设置 了解超时机制

  • .rightclick()可能会因等待元素达到可操作状态而超时。
  • .rightclick()可能会因等待添加的断言通过而超时。

命令日志

右键点击DOM元素

cy.get('.rightclick-action-div').rightclick()

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

右键点击的命令日志

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

右键点击的console.log

历史

版本变更
6.1.0添加选项scrollBehavior
3.5.0添加.rightclick()命令

另请参阅