首页 > 解决方案 > Codeceptjs/Puppeteer 测试仅在 Jenkins 上失败:“节点不可见或不是 HTMLElement”

问题描述

我有一个 Codeceptjs/Puppeteer 测试,它在 Kubernetes 编排的容器上本地运行,并使用来自 AWS 的数据。

示例代码

...
I.waitForVisible('#§Brand§amazon + div', 30);
I.scrollTo('#§Brand§amazon + div', 30); // Jenkins stops here
...

我也试过

...
I.waitForVisible('#§Brand§amazon + div', 30);
I.click('#§Brand§amazon + div'); // Jenkins stops here
...

当我在 Jenkins 管道中运行相同的测试(一切都在 AWS 上运行)时,始终使用 K8S 管理事物,步骤“I.scrollTo”“I.click”失败并显示以下消息:“节点不可见或不是HTML 元素”。

输出屏幕截图显示页面已正确加载。这些屏幕截图在本地和 Jenkins 管道上都是相同的。

是什么导致测试在本地运行并在 Jenkins 上失败?

标签: jenkinspuppeteercodeceptjs

解决方案


最后发现詹金斯与这个问题无关。

Puppeteer 似乎需要一些时间才能使新的 SVG DOM 元素变为可点击。在点击之前放一个I.wait(3)解决了这个问题。

更安全的策略是I.retry({retries: 3, maxTimeout: 1000 }).click(selector);在单击任何内容之前系统地放置一个。

也可以看看


推荐阅读