You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cypress读取剪贴板报错:Cannot read properties of undefined (reading 'clipboardAction')

解决Cypress获取剪贴板内容报错的方案
  • 问题原因:你代码里依赖的_vClipboard是v-clipboard插件内部挂载的属性,要么是点击后该属性还未生成(异步延迟),要么是插件版本更新后属性名已变更,或者DOM元素上根本没有这个实例。

  • 替代方案1:直接读取系统剪贴板(推荐)
    Cypress 12+支持原生剪贴板API,不需要依赖元素内部属性,代码更稳定:

    cy.get('.download-link-wrapper > .download').click();
    // 等待剪贴板内容就绪
    cy.window().then(async (win) => {
      const copiedLink = await win.navigator.clipboard.readText();
      cy.visit(copiedLink);
    });
    
  • 替代方案2:等待元素的v-clipboard实例生成
    如果你必须用原思路,需要确保点击后_vClipboard属性已存在,可添加等待断言:

    cy.get('.download-link-wrapper > .download')
      .click()
      .should(($el) => {
        // 断言_vClipboard存在
        expect($el[0]._vClipboard).to.exist;
      })
      .then(($clipboard) => {
        const copiedLink = $clipboard[0]._vClipboard.clipboardAction.text;
        cy.visit(copiedLink);
      });
    
  • 替代方案3:检查v-clipboard版本适配
    如果是v-clipboard版本问题,新版本可能把实例存在不同的属性下,比如__vue__里:

    cy.get('.download-link-wrapper > .download')
      .click()
      .then(($clipboard) => {
        const vueInstance = $clipboard[0].__vue__;
        // 查看vue实例里的剪贴板相关属性,可console.log(vueInstance)找对应值
        const copiedLink = vueInstance.clipboardText; // 示例属性,需根据实际调整
        cy.visit(copiedLink);
      });
    

内容的提问来源于stack exchange,提问作者Deseree Stukes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 03:34:51