jenkins - 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 上失败?
解决方案
最后发现詹金斯与这个问题无关。
Puppeteer 似乎需要一些时间才能使新的 SVG DOM 元素变为可点击。在点击之前放一个I.wait(3)
解决了这个问题。
更安全的策略是I.retry({retries: 3, maxTimeout: 1000 }).click(selector);
在单击任何内容之前系统地放置一个。
也可以看看
推荐阅读
- android - 使用最新的 WindowInset API 出现软键盘时如何调整对话框布局
- react-native - 在反应原生图表工具包中在 barChart 中导入 Y 标签
- rust - 由两个闭包修改的变量
- python - Pythonseasonal_decompose 函数中的残差图未正确显示
- docker - 在气流上使用 docker 操作符挂载目录不起作用
- java - Apache Beam - RabbitMq 读取 - 失败确认消息和引发异常
- javascript - Vue 3:即使发出了也发出警告
- python - 使用循环读取文件并搜索内容,允许用户多次输入以找到匹配项
- vue.js - vue 应用程序最佳实践/模式以人性化标签显示数据?
- python - Python pandas:动态更改未指定列数的值