我正在尝试运行一个涉及带Firefox的iframe的测试。该测试适用于chrome,但不适用于Firefox。看来,当我获取iframe并随后尝试找到该正文时,该正文返回为未定义。
Timed out retrying: Expected to find element: undefined, but never found it.
cy.get('iframe').then(($iframe) => {
const $body = $iframe.contents().find('body');
cy.wrap($body)
^
firefox的html与chrome的html相同。有谁知道这是什么根本问题?
答案 0 :(得分:0)
最可能的原因是same origin policy。
简而言之,如果iframe中加载的页面与父页面来自不同的域,那么您的JavaScript将无法访问iframe中的DOM。
它在Chrome上为您工作的原因很可能是因为您在cypress.json
配置文件中使用了此设置来禁用Chrome中的同一来源策略:
"chromeWebSecurity": false
撰写本文时(2020年11月),Firefox遗憾地没有一种等效的方法来出于测试目的禁用相同的原始策略。错误报告为here。