cypress - 赛普拉斯测试通过了单个表单输入字段,但忽略了以下输入字段
问题描述
我正在尝试在 Cypress 中测试带有 3 个输入字段的 Stripe 表单。我找到了一个示例,该示例可用于测试获取所有付款信息的单个输入(https://medium.com/@chipomapondera/hi-michael-98e432948028)。
我的版本继续输入 CC,但在下一个输入时失败。我的代码如下:
it('checks user can support the Creator', () => {
cy.get('button[class="buttons__FollowButton-sc-10ti9z2-0 huoUmA"]').click()
cy.wait(4000)
cy.get('body')
.should('contain', 'Join this community')
cy.get('button[class="styledComponents__SubscribeButton-g42pit-3 kUgWbq"]').click()
cy.getWithinIframe('[name="cardnumber"]').type('4242424242424242')
.getWithinIframe('[name="exp-date"]').type('1232')
.getWithinIframe('[name="cvc"]').type('987')
})
输入卡号后好像不像下面这样: cy.getWithinIframe('[name=”exp-date”]').type('1232') cy.getWithinIframe('[name=”cvc ”]').type('987')
我收到的错误是: cypress error
解决方案
我关注了您分享的中篇文章,并遇到了与您相同的问题。造成这个问题的原因当然是stripe在创建多个iframe,而文章中创建的方法只是获取第一个iframe。
所以一个非常简单的解决方案是将包含 iframe 的 div 的 id 传递给我们的 getWithinIframe 函数。该函数现在将如下所示:
Cypress.Commands.add('getWithinIframe', (iframeSelector, targetElement) =>
cy.get(`#${iframeSelector} iframe`).iframeLoaded().its('document').getInDocument(targetElement));
并这样称呼它:
cy.getWithinIframe('cardNumberElement','[name="cardnumber"]').type(1212123);
希望这可以帮助任何面临同样问题的人。
推荐阅读
- docker - 更新 docker 内的 nextcloud
- r - 包装选择输入选项(长文本)作为数据表列 R 闪亮
- json - 在 C# 中使用 json 私钥对 Header 和 Payload 进行签名
- function - 将调用的函数 Power BI 中的值相乘
- sql - 如何在不更改原始数据库的情况下使用 SQL 更改已加载表的列名?
- django-rest-framework - 实现 admin.py 时如何获取外键引用的字段
- oracle - PL/SQL/Oracle DB:过程:ORA-29013:SSL MAC 验证失败(数据库 19c)
- entity-framework-core - 将多个 SQL SELECT 映射到单个无键实体框架核心实体
- spring-boot - 使用 oauth2 保护在 pcf 中运行的 springboot rest api
- java - SpringBoot 连接超时