无法单击iframe-Cypress中的PayPal按钮

无法单击iframe-Cypress中的PayPal按钮,iframe,paypal,cypress,Iframe,Paypal,Cypress,我正在Cypress上为webshop编写e2e测试用例,我们已经集成了PayPal,我无法在iframe中单击PayPal按钮。 在iframe中查找元素时总是出错。 有人知道我该怎么做 代码 命令 Cypress.Commands.add('getframe3D', { prevSubject: 'element' }, $iframe => { return new Cypress.Promise(resolve => { $iframe.ready(f

我正在Cypress上为webshop编写e2e测试用例,我们已经集成了PayPal,我无法在iframe中单击PayPal按钮。 在iframe中查找元素时总是出错。 有人知道我该怎么做

代码

命令

Cypress.Commands.add('getframe3D', { prevSubject: 'element' }, $iframe => {
    return new Cypress.Promise(resolve => {
        $iframe.ready(function() {
          resolve($iframe.contents().find('body'));
        });
    });
  });

在Cypress中与iframe交互非常棘手,但这是可能的。您的自定义命令看起来是正确的,它也适用于我。不过,您也可以尝试下面的方法,并检查它是否适合您

这里提供iframe的CSS选择器作为参数getIframeBody()函数

cy.getIframeBody('iframe')。查找('paypal-button-number-0')。单击()
自定义命令

Cypress.Commands.add('getIframeBody',(iframe)=>{
返回cy.get(iframe)。然后($iframe=>{
const$body=$iframe.contents().find('body')
cy.wrap($body)
})
})

有关更多信息,您可以按照与iFrame交互的命令来获取iFrame主体。您的自定义命令很好,只是按钮的选择器错误

因为它是一个类,所以需要一个
前缀

cy.get('iframe'))
.getframe3D()
.find(“.paypal-button-number-0”)

请发布您收到的错误。
Cypress.Commands.add('getframe3D', { prevSubject: 'element' }, $iframe => {
    return new Cypress.Promise(resolve => {
        $iframe.ready(function() {
          resolve($iframe.contents().find('body'));
        });
    });
  });