如何单击赛普拉斯iframe中存在的菜单项?

时间:2019-07-23 09:09:32

标签: cypress

单击后,我有一个名为“转换表”的菜单项,其中显示更多项供选择。这些都存在于iframe中。我想单击“转换表”中可用的选项,但是当我搜索选项时,主弹出窗口将关闭。请提出一些保持打开状态的方法,然后选择其中的选项。

            const body = $iframe.contents().find('body');
            let getElement = cy.wrap(body);
            getElement.find(getdatasourcelocator.SearchBox).should('be.visible', { timeout: 30000 }).type(datasourceType);
            getElement = cy.wrap(body);
            getElement.find('.textCsv').click();
            getElement = cy.wrap(body);
               getElement.find(getdatasourcelocator.URL).type(entityURL);
               getElement = cy.wrap(body);
               getElement.find('button').contains('Next').click();
               getElement = cy.wrap(body);
               getElement.wait(15000);
               getElement.find('button').contains('Transform table').click().then(()=>{
                cy.get('button[data-automation-id="PromoteHeaders"]').should('be.visible');
                cy.contains('li','Use first row as headers').should('be.visible', { timeout: 30000 }).click()
               });
            });
        }```

1 个答案:

答案 0 :(得分:0)

不幸的是,您不能在iframe中定位元素或与之交互-不管它是同一域还是跨域iframe。这是一个已知的issue

作为解决方法,您可以尝试使用注释中的某些内容:

  1. 添加自定义命令。

    Cypress.Commands.add('iframe', { prevSubject: 'element' }, $iframe => {
      return new Cypress.Promise(resolve => {
        $iframe.on('load', () => {
          resolve($iframe.contents().find('body'));
        });
      });
    });
    
  2. 并使用此命令。

    // for <iframe id="foo" src="bar.html"></iframe>
    cy.get('#foo').iframe().find('.bar').should('contain', 'Success!');