CodeceptJS/Puppeteer 只在暂停的会话期间看到元素

问题描述

我在使用 CodeceptJS 和 puppeteer 测试 React 应用程序时遇到了一个非常令人沮丧的问题 - 它仅在暂停模式下才能找到带有自定义定位器的元素。

我的自定义定位器是 data-test-id。我使用 I.seeElement("$id-of-element-here")I.seeNumberOfElements("$test-id",X) 定位元素。

当我的测试暂停并且我手动移动到测试的每个步骤时,这完美工作,但是当测试从开始到执行时不起作用完成 - 根本找不到目标元素。

有时我可以用 I.wait(X)I.refreshPage()解决这个问题,但我现在遇到了这些都没有帮助的情况。

我确实使用 Chrome 和 Chromium 的开发工具在 HTML 中看到了 data-test-id 属性。也没有错别字。

显示目标元素的示例没有多大意义,因为问题似乎是随机发生的,我无法看到发生这种情况的地点/时间的任何模式。

这些是自定义定位器插件的设置,在 codecept.conf.js 中:

plugins{
  ...
  customLocator: {
    enabled: true,attribute: 'data-test-id',},...
}    

任何帮助将不胜感激! :)

解决方法

可以选择waitForNavigation吗?

https://codecept.io/helpers/Puppeteer/#configuration https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagewaitfornavigationoptions