我正在尝试使用 Cypress.io 为我的 chrome/firefox 扩展编写测试
在我的扩展内容脚本中,我将一个按钮附加到 DOM 的 body 元素,并尝试使用 cypress 单击该按钮,
然而,在运行测试时,按钮被注入到测试运行器 DOM 中,而不是我的测试通过 cy.visit() 访问的页面的 DOM - 所以我的 cy.get('injected element') 调用找不到元素。
看起来 cypress 在 iframe 中加载 cy.visit() 页面,而 cy.get() 无法找到该 iframe 之外的元素。
我该如何解决这个问题?
发布此信息是为了将来可能遇到同样问题的人。
您可以通过添加来解决这个问题"all_frames": true
扩展程序 manifest.json 中的 content_scripts 内。这允许将扩展注入到所有框架中,而不仅仅是选项卡的最顶部框架中
Here's a link https://developer.chrome.com/docs/extensions/mv3/content_scripts/#:%7E:text=The%20%22all_frames%22%20field%20allows%20the,topmost%20frame%20in%20a%20tab欲了解更多信息all_frames
您也可以仅在运行 cypress 时添加此内容,方法是在将扩展加载到 cypress 测试运行程序之前修改manifest.json
-从扩展构建文件夹中读取清单
-修改 content_scripts 以包含"all_frames": 'true'
-保存更新版本的清单
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)