如何使用迭代点击柏树中的每种付款方式?

How to click on each payment method in cypress using iteration?

我的要求是点击每一种支付方式(pay-safe、visa、bit-pay 等) 然后通过比较 URL.

使用断言方法进行验证

问题:无法点击元素。我在变量中得到空值。尝试使用 val() 以及 html() 方法。

我试过下面的代码。

//cy.get('.real-money--providers-list') = allPaymentMethods

  depositFiat.allPaymentMethods().find('[src*="providers/logo"]').each(($element, index, $list) => {
    var namePaymentProvider = $element.find('[alt*="safe"]').text()
    cy.log(namePaymentProvider)
    cy.wait(1000)

      if(namePaymentProvider.includes('class')){
        $element.find('.provider-content--choice').click()
        //cy.get('.provider-content').invoke('removeAttr','src').click()
        //depositFiat.secureCheckout().click()
        //cy.back()
      }
})

由于 cypress 无法处理 child windows 我尝试使用 invoke 方法但没有成功。

在此处查找 HTML

<div class="provider-img"><img alt="safecharge_paysafecard" class="style__Logo-a3ugi5-2 fAwRoV visible" src="https://static.xyz.com/1234123463/img/providers/logo_safecharge_paysafecard.svg"></div>

根据您的 HTML fiddle,我可以看到对于每个支付提供商,您都可以使用 css 选择器 img[class*="style__Logo"]

对于一种付款方式,您可以使用:

cy.get('img[class*="style__Logo"]').eq(0).invoke('attr', 'src').should('contain', 'https: //static.xyz.com/')

您正在寻找一张图片,然后试图点击它。 点击事件很可能发生在按钮上

尝试点击按钮:

cy.get('.provider-content').each($element => {
  cy.wrap($element).click()
  // Assert something here
})

如果点击操作打开了一个新的 tab/window,并且您想断言它移动了您所做的这个新的 link,那么 Cypress 不直接支持这一点。 相反,您将获得 url 应该 通过点击打开并验证。

或者

存根浏览器 window 以便新选项卡在您当前所在的同一选项卡中打开。

您可以使用 Recursion and Jquery .removeAttr :


    cy.get('[src*="providers/logo"]') //You need to make sure here is the correct selector that covers all methods here
        .then(methods => {
            checkPaymentMethod
            function checkPaymentMethod(methodNumber = 0) {
                if(methodNumber < methods.length) {
                    Cypress.$(methods[methodNumber]).removeAttr("target");
                    cy.get(methods[methodNumber])
                        .click()
                        .should('not.exist')
                    cy.url().should('eq', 'targetUrl')
                    cy.visit('yourPageUrl')
                    cy.url().should('eq', 'yourPageUrl')
                    methodNumber ++
                    checkPaymentMethod(methodNumber)
                }
            }
        })