【问题标题】:CodeceptJS/Puppeteer only sees elements during paused sessionsCodeceptJS/Puppeteer 仅在暂停会话期间看到元素
【发布时间】:2021-04-14 01:24:50
【问题描述】:

我在使用 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',
  },
  ...
}    

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

【问题讨论】:

    标签: reactjs puppeteer codeceptjs


    【解决方案1】:

    【讨论】:

    • 嘿,谢谢你的提示!我还没有使用过waitFroNavigation,但它看起来是缓解问题的好方法。下次遇到这个问题我会试试的。不过,在这种特殊情况下,我找到了答案——问题是我在 within 块中寻找一个元素。我知道 - 菜鸟,对吧? :)
    【解决方案2】:

    解决方案:

    我在一个相当大的 within 块 (link) 中运行有问题的断言,所以我最终在页面上不再存在的元素中寻找某些东西。

    似乎在pause() 期间,您可以找到并操作当前可见的元素,within 块无关紧要。

    这是我可以解释的唯一方法,为什么在这种情况下,可以在暂停期间检测到元素,但在从开始到结束的实际执行测试期间检测不到。

    我将断言移出within 块后,一切正常并按预期运行。

    为困惑道歉 - 每天学习... :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-02
      • 1970-01-01
      • 2017-02-08
      • 1970-01-01
      • 2021-01-18
      • 2017-05-21
      相关资源
      最近更新 更多