问题标签 [jest-puppeteer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
automation - 你如何使用 puppeteer 遍历复选框?
我有一个复选框列表,每次 puppeteer 运行我需要的测试时:
- 如果已经选择了一个框,则移动到下一个框并选择它,如果选择了下一个框,则移动到下一个复选框,依此类推
if(await page.$eval(firstcheckbox, check=>check.checked =true)) { //检查框是否被选中 await page.waitForSelector(do something, ele=>elem.click())//如果复选框已被选中,移动到第二行并选择一个未选中的框
}否则如果{
await page.$eval(firstcheckbox, check=>check.checked =false)){ //如果复选框没有勾选 await page.$eval(clickcheckbox, elem=>elem.click);//勾选复选框
puppeteer - 如何获取 puppeteer-cluster 浏览器的 WSendpoint
在一个需要:
- 使用登录凭据开始每个会话 + 通知/OTP
- 异步处理多个帐户
- 远程调试或监控会话
- 可以在打开的会话上以任意顺序请求 5+ 种不同的操作
我希望它是一个 puppeteer 集群浏览器,有一个远程调试端口来监控它,但无法集成 WsEndpoints
如何在 puppeteer-cluster 中拥有任何会话的 WSendpoint
(更多信息:我会将它们放在会话文件中,以便为我的下一个选择的后续操作提供其会话上的连接点
- localhost/StartScraper 创建 WSendpoint
- localhost/login==WSendpoint==>连接到现有会话做登录的东西
- localhost/listItems==WSendpoint==>连接到现有会话做 listItems 的东西...)
javascript - 我在 Create-React-App 识别 Jest 的“jest-puppeteer”预设时遇到问题。我用的是 JS,不是 TS
初学者在这里。如问题所述...我正在尝试将 puppeteer 预设与 Jest 一起使用,但我在下面收到此错误。有人有想法么?我已经发布了我的 package.json 文件。
错误: ################################################ ####################################### package.json Jest 配置中的这些选项是Create React App 目前不支持:
• 预设
如果您希望覆盖其他 Jest 选项,则需要从默认设置中退出。您可以通过运行 npm runeject 来做到这一点,但请记住这是一种单向操作。你也可以向 Create React App 提出问题,讨论支持更多开箱即用的选项。
javascript - 使用 jest-puppeteer 对文本字段进行 Webscrape 测试
好的大家,这里有点笨拙。我正在尝试使用 Jest 和 puppeteer 为电子邮件字段编写测试。问题是我似乎无法弄清楚如何让这个测试工作。我要测试的是,如果用户在电子邮件字段中没有输入任何内容,则会正确显示错误消息。我附上了 CSS 选择器属性的照片,您将在其中找到 customError:如果有效输入存在或不存在,这将在 true 和 false 之间循环。我还附上了 HTML 片段,您可以在其中找到 ID。我是 webscraping、JS、puppeteer 和 Jest 的初学者,所以我知道这并不理想,而且我确信我的代码存在很多问题。电子邮件文本字段图像 CSS 选择器道具特写图像 使用 devtools 的完整视图
我想我也不能嵌入图像,所以提供了链接!
jestjs - 有没有办法以编程方式创建 Gitlab CI 测试?
我们的 QA 团队目前有一个测试工具,他们在单个 url 上运行。那有一个下拉列表,然后允许他们选择要执行的工具的 xml 测试。我想运行他们当前使用 Gitlab CI 管道运行的所有测试用例,但没有找到如何做到这一点的运气。我现在倾向于在这一点上这是不可能的,但我想我会在这里检查。
目前,我得到了所有 xml 的列表并创建了单独的 url,这些 url 将自动运行每个,但这发生在一个开玩笑的测试中。Jest 测试将构建这个 url 数组并针对我们的 prod env 运行每个,然后针对 staging 并在它们之间执行请求比较。问题是我必须将个人状态发送到另一个数据库,我最终将创建一个仪表板进行查询。
我想做的是能够利用 Gitlab 已经提供的东西,但我不确定这是否可以做到。我有一个单独的笑话测试,它打开线束并分别构建每个 url。然后,它在集群内的单独 puppeteer 实例中打开每个 url,并运行所有测试用例。从 Gitlab 的角度来看,它会显示成功,但从单个测试用例的角度来看,它们的状态可能是通过或失败。有没有办法让这些在 Gitlab CI 中单独运行?我很好奇是否有某种编程方式可以执行预处理,然后允许我输入 gitlab CI。
如果有人对这是否可以完成有任何想法,我将不胜感激。
谢谢!
jestjs - 如何在 handleTestEvent 函数或 afterEach 块中访问 Jest 测试状态(失败或通过)?
我需要将 JEST 测试的结果发送到 InfluxDB。为此,我需要在每次测试执行后在 handleTestEvent 函数或 afterEach 块中获取测试状态。我在文档中没有找到任何提示。您能否分享有关如何实现此功能的任何想法?谢谢!
javascript - Puppeteer:如何监听 http 响应,直到找到正确的响应?
目标: 我正在编写一个 Puppeteer 测试,它需要监听某个响应,检查响应 url 是否具有某种格式,然后保存响应,以便以后可以使用正文中的值。
当前代码:
假设我们有一个 const teacherId
。现在我的代码如下所示:
问题: 这很好用......在找到第一个http响应时。但我知道我正在寻找的 http 响应需要更长的时间。当我手动加载页面时,它始终是网络选项卡中的第 4-6 个响应。
我尝试过的:
我尝试过更改teacherPromise
to 调用page.on('request', ...)
,但它仍然只捕获了第一个请求。我曾短暂考虑过将 Promise 放在 for 循环中,但这似乎很混乱。
任何建议表示赞赏!
jestjs - 无论如何使用 jest-puppeteer 和 puppeteer-cluster 的队列来处理测试断言?
我非常喜欢使用 puppeteer-cluster 获得的并发性。然而,我目前的目的是提高我的 jest-puppeteer 单元测试的性能。我有一个 url 数组,我遍历这些 url,并希望能够从任务中获得通过或失败,或者在任务中进行测试。不幸的是,当我使用 cluster.queue 并在任务中进行期望调用时,似乎 test.each 调用只是继续并最终表明测试已经通过,而不管断言结果是什么。
这是可以理解的,因为文档声明队列不会等待,但我希望也许有人可能对实现我想要做的事情有一个创造性的想法。通过使用 cluster.execute,我能够等待响应并依次处理结果,但我希望有某种回调或让 puppeteer-jest 处理来自任务内部的响应的方法。
不幸的是,jest 不允许 describe 异步运行,所以当我在 describe 块中添加 await.task 时,我得到一个错误,因为我可以在任务前加上 await 关键字。因此,我将 cluster.task 调用放在 beforeAll 处理程序中。在 test.each 循环中添加测试似乎是个坏主意,因为我相信它会在每次迭代时声明它。我现在要对此进行测试,但倾向于这也不是解决方案。如果有人有任何建议,我很想听听。谢谢!
javascript - 使用 jest+puppeteer 和 Node.js 未定义函数的问题
这里有一个doozy。仍在试图弄清楚整个类型脚本的事情。基本上我正在做的是我试图从我制作的实用程序文件中调用一个函数并且我得到 --- 评估失败:ReferenceError:testUtils_test_1 未定义。问题是当我尝试调用我制作的遍历函数时。我可能需要在函数本身中修复更多的东西,但我还没有完全解决它,因为该函数甚至没有从我的测试中执行。我正在使用 Jest+puppeteer 和 .ts
测试在 .test.ts 文件中,函数在单独的 testUtils.test.ts 文件中
- 我已经完成了正确的导入语句
这可能是我犯的一个简单错误,但我是新手。解释会很有帮助!提前致谢。
typescript - 如何使用 Jest 调整 Typescript StencilJS 以支持 ES6 动态模块导入
这里有许多类似的问题(...),但没有一个可以帮助我获得纯模板配置。配置管理应尽可能留给 Stencil IMO (...)
我的 Stencil 组件工作正常,我几乎尝试了所有方法,但是需要导入的 Jest 规范测试d3-geo
一直在抛出我:
我错过了什么?
我可能可以使用 Babel 来完成这项工作,但这似乎很老套。我无法想象我们实际上需要一个 Babel 预洗来获得 ES6 模块支持。
应用细节:
- Node@14.16.0(来自 docker-image buildkite/puppeteer)
- 模板@2.6.0
- 开玩笑@26.6.3
- 打字稿@4.4.2
- 导致错误的模块:d3-geo @3.0.1
我在 package.json 中有开玩笑的配置:
并且 tsconfig 包含: