无法使用已通过浏览器扩展附加到 DOM 的 Cypress.io 选择元素

我正在尝试使用 Cypress.io 为我的 chrome/firefox 扩展编写测试

在我的扩展内容脚本中,我将一个按钮附加到 DOM 的 body 元素并尝试使用 cypress 来单击该按钮,但是在运行测试时,该按钮被注入到测试运行器 DOM,而不是 DOM我的测试通过 cy.visit() 访问的页面 - 所以我的 cy.get('injected element') 调用找不到该元素。

看起来 cypress 在 iframe 中加载 cy.visit() 页面,而 cy.get() 无法找到该 iframe 之外的元素。

我该如何解决这个问题?


小唯快跑啊
浏览 116回答 1
1回答

HUWWW

将此发布给将来可能遇到相同问题的人。"all_frames": true您可以通过在扩展 manifest.json 中添加内部 content_scripts 来解决此问题。这允许将扩展注入所有框架,而不仅仅是选项卡的最顶层框架您也可以仅在运行 cypress 时添加它,方法是在将扩展加载到 cypress 测试运行程序之前修改 manifest.json- 从扩展构建文件夹中读取清单-修改content_scripts以包含"all_frames": 'true'-保存清单的更新版本
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript