0

我有一些代码试图捕获 iframe 中的元素,但我只是不断被抛出一个错误

it('Send Medication',function(){
       cy.get('.aut-iframe') 
       .should(iframe => expect(iframe.contents().find('body')).to.exist)
       .then(iframe => cy.wrap(iframe.contents().find('body')))
       .within({}, $iframe => {
            cy.get('.pending-medication-check-box').click({force:true})

这是我得到的错误:

在此处输入图像描述

在此处输入图像描述

最后,这是 iframe 信息:

在此处输入图像描述

4

2 回答 2

3

我假设您只是在加载正文之前错过了获取 iframe 的重试。简单getshould组合不会等待这种情况发生。官方文档说明您.its('body')在使用 iframe 时应该这样做,因此请尝试以下操作:

cy.get('.aut-iframe').its('body').then((body) => { cy.wrap(body).should('...') }

参考:https ://www.cypress.io/blog/2020/02/12/working-with-iframes-in-cypress/#header

于 2021-10-20T15:19:13.460 回答
1
  1. 安装cypress-iframe插件。

  2. import 'cypress-iframe';安装后写下cypress/support/commands.js

  3. 最后你的代码应该是这样的:

cy.frameLoaded('.aut-iframe')
cy.iframe('.aut-iframe')
  .find('.pending-medication-check-box')
  .should('be.visible')
  .click()
于 2021-10-20T15:51:53.573 回答