单击后,我有一个名为“转换表”的菜单项,其中显示更多项供选择。这些都存在于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()
});
});
}```
答案 0 :(得分:0)
不幸的是,您不能在iframe中定位元素或与之交互-不管它是同一域还是跨域iframe。这是一个已知的issue。
作为解决方法,您可以尝试使用注释中的某些内容:
添加自定义命令。
Cypress.Commands.add('iframe', { prevSubject: 'element' }, $iframe => {
return new Cypress.Promise(resolve => {
$iframe.on('load', () => {
resolve($iframe.contents().find('body'));
});
});
});
并使用此命令。
// for <iframe id="foo" src="bar.html"></iframe>
cy.get('#foo').iframe().find('.bar').should('contain', 'Success!');