Codeceptjs/Puppeteer 测试仅在 Jenkins 上失败:"Node is either not visible or not an 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">失败,并显示消息:"节点要么不可见,要么不是 HTMLElement"。

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

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

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

看起来Puppeteer可能需要一些时间才能使新的SVG DOM元素变得可点击。在点击前放置I.wait(3)解决了问题。

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

参见

  • https://github.com/GoogleChrome/puppeteer/issues/1769
  • https://github.com/GoogleChrome/puppeteer/issues/1247

相关内容

最新更新