我有一个 cypress 测试,其中包括检查复制按钮是否已复制输入字段中的值。问题是我还没有找到一个好的方法来为 Mozilla 浏览器授予剪贴板权限,就像 Chrome 浏览器可以做到的那样。
而且我不确定这样的测试是否有意义,如果不是向浏览器授予剪贴板权限而是模拟复制操作:
cy.document()
.then((doc) => {
const input = doc.querySelector(inputSelector)
input.select()
doc.execCommand('copy')
})
我尝试向 cypress 配置文件添加剪贴板权限
env: {
permissions: {
'clipboard-write': true
}
}
你可以这样做,让我知道它是否有效..!
const { defineConfig } = require('cypress')
module.exports = defineConfig({
e2e: {
setupNodeEvents(on, config) {
// implement node event listeners here
},
experimentalModifyObstructiveThirdPartyCode: true,
chromeWebSecurity: false,
firefoxGcInterval: null
},
})
然后添加自定义命令
Cypress.Commands.add('pasteText', (text) => {
cy.window().then((win) => {
win.navigator.clipboard.writeText(text).then(() => {
cy.focused().trigger('paste');
});
});
});
然后在您的测试文件中您可以使用自定义命令
it('should paste text', () => {
cy.visit('your-page-url');
cy.get('input-selector').focus();
cy.pasteText('Text to paste');
});