我是一个初学者,我尝试在以下网站中使用 cypress(javascript) 自动支付薪金: https://stripe- payments-demo.appspot.com/
我正在尝试以 .js 格式实现该解决方案
我尝试了很多解决方案
首先我尝试了stripe支付插件 如何在cypress中获取条纹元素
其次,我配置了 cypresss.config.js 设置
然后我查看了各种博客和论坛,寻找可能的解决方案,例如: https://bionicjulia.com/blog/cypress-testing-stripe-elements
目前我正在尝试实现这个解决方案: Cypress 12.8.1 无法与 Stripe Elements iframe 配合使用
但我收到以下错误 在此输入图片描述
这是.js中的代码
/// <reference types="Cypress" />
/// <reference types="Cypress-iframe" />
import 'cypress-iframe'
import 'cypress-plugin-stripe-elements';
describe('Stripe Payment', ()=> {
it('careerEDPayment', ()=> {
cy.intercept({ resourceType: /xhr|fetch/ }, { log: false }) // suppress fetch logs
cy.viewport(1500, 1000)
cy.visit('https://stripe-payments-demo.appspot.com');
function getStripeField({iframeSelector, fieldSelector}, attempts = 0) {
Cypress.log({displayName: 'getCardField', message: `${fieldSelector}: ${attempts}`})
if (attempts > 50) throw new Error('too many attempts')
return cy.get(iframeSelector, {timeout:10_000, log:false})
.eq(0)
.its('0.contentDocument')
.find('body', {log:false})
.then(body => {
const stripeField = body.find(fieldSelector)
if (!stripeField.length) {
return cy.wait(300, {log:false})
.then(() => {
getStripeField({iframeSelector, fieldSelector}, ++attempts)
})
} else {
return cy.wrap(stripeField)
}
})
}
getStripeField({
iframeSelector: 'iframe[name^="__privateStripeFrame"]',
fieldSelector: 'div.CardNumberField-input-wrapper'
})
.type('4242424242424242')
})
} )
即使调整了一些设置后,它仍然显示 0.contentDocument 在您的主题上不存在。
您刚刚犯了一个拼写错误,请看示例 - 对于您测试的特定页面,索引是
1
而不是 0
。
cy.visit('https://stripe-payments-demo.appspot.com')
function getStripeField({iframeSelector, fieldSelector}, attempts = 0) {
Cypress.log({displayName: 'getCardField', message: `${fieldSelector}: ${attempts}`})
if (attempts > 50) throw new Error('too many attempts')
return cy.get(iframeSelector, {timeout:10_000, log:false})
.eq(1) // this index
...