单击 iFrame 中的元素 - 赛普拉斯

Click on element inside iFrame - Cypress

任何人都可以,请协助以下内容:

想要单击驻留在找到的 iframe 上的元素。此外,在 commands class 中导入插件 import 'cypress-iframe';。 创建iframe和点击元素代码:

clickIFrameElement(elementCss, element1Css) {
    cy.frameLoaded(elementCss);
    cy.iframe(elementCss).find(element1Css).then(function(){
       cy.get(element1Css).click({ force: true })
    })
}

在测试中,我调用这个命令:

cy.frameLoaded(elementCss).eq(0);
cy.iframe().find(element1Css).should('be.visible').click()

它确实找到了 iframe,但没有点击元素。得到的错误:

Timed out retrying after 20000ms: Expected to find element: #grouped-pageload-Banner button[class*="save-consents evSpAcceptBtn"], but never found it.

HTML 用于 iframe:

我哪里做错了,或者代码哪里不对?

提前致谢

更新

还使用以下命令尝试了第二种方法:

cy.iframe().find(#grouped-pageload-Banner button[class*="save-consents evSpAcceptBtn"]).should('be.visible').click()

但是出现第二个错误:

cypress-iframe commands can only be applied to exactly one iframe at a time.  Instead found 7

检查 iframe URL 是否属于当前 window 的同一域,否则,出于安全原因,无法执行此操作。但是如果你知道如何在用户中安装 Chrome 扩展,可以通过 content_script ;)

执行此操作

请将此行替换为您的代码

cy.iframe('#ifrmCookieBanner')
    .find('#grouped-pageload-Banner button[class*="save-consents evSpAcceptBtn"]')
    .should('be.visible')
    .click()

并将其放入您的 support/index.js

Cypress.on('uncaught:exception', (err, runnable) => {
    // returning false here prevents Cypress from
    // failing the test
return false
})