问题描述
我在赛普拉斯工作的页面上有iframe元素。我使用了将文本输入到iframe中的功能:
function inputTextToIframe(text) {
cy.get('iframe').then(($iframe) => {
const $body = $iframe.contents().find('body');
cy.wrap($body).type(text);
});
}
该功能运行正常。但是关于元素可见性存在一个问题:必须在函数开始工作之前将其可见。因此,我必须用足够使元素完全加载的时间间隔(约10秒)来强制cy.wait()
。只有这样我才能应用该功能。如果我在不使用cy.wait()
的情况下调用该函数,则无论在cypress.json中使用的defaultCommandTimeout
为何,iframe都不会在页面上显示。例如。我使用cy.wait(10000)
,并且代码在加载iframe后可以正常工作,但是如果我将cypress.json配置为"defaultCommandTimeout": 30000
而不是使用cy.wait()
,则该代码将无法工作,因为iframe永远不会出现在页面上,并且赛普拉斯表示不存在。看来cy.get()
指令阻止了元素的加载。有可能吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)