javascript - 如何在剧作家中等待 JavaScript 完成

标签 javascript puppeteer playwright

我正在使用 Playwright 和 JavaScript 测试 UI。我的代码找到了一个输入元素,该元素有时可以是下拉菜单,有时是文本,有时是日期。为了解决这个问题,我分两步输入值。首先,我填充文本,然后单击 tab 键以调用格式化元素中的值的 JavaScript。

await page.fill("#myID", inputText); 
await page.keyboard.press('Tab');  // this line trigger the JS

// continue to the next element 
问题是,它没有等待 JavaScript 完成。如何在代码继续之前等待 JS 完成。

最佳答案

使用 page.waitFor...功能
当满足以 page.waitFor 开头的某些条件时,剧作家提供了许多功能。 (例如 page.waitForFunction )。大概page.waitForFunction是最通用的,因为您可以传递一个等待满足特定条件的自定义函数。
或者,使用超时
我想你可以使用 setTimeoutpage.evaluate在页面上下文中等待其他 JavaScript 运行:

await page.evaluate(() => {
  // if this doesn't work, you can try to increase 0 to a higher number (i.e. 100)
  return new Promise((resolve) => setTimeout(resolve, 0));
});
这可能相当于 page.waitForTimeout(0) ,但我不确定。请注意,他们建议不要使用 page.waitForTimeout在生产中。

关于javascript - 如何在剧作家中等待 JavaScript 完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66251670/

相关文章:

javascript - 如何让 Puppeteer 在客户端与 ReactJS 应用程序一起工作

javascript - 编剧错误 : Firefox revision is not downloaded. 运行 "npm install"或 "yarn install"

javascript - 相当于 cypress 中的 find() 的剧作家

angular - Playright 使用 global-setup.ts 缓存 session 超时登录到应用程序,等待 DEBUG=0 的选择器,而 DEBUG=1 则不会超时

javascript - 在 Canvas 的底部边缘绘画时图案会移动

javascript - jquery 我使用 .css() 将最小高度缩放到窗口高度的错误在哪里

javascript - 仅在可见时加载图像?

javascript - 在 javascript 函数中执行 puppeteer 代码

javascript - 使用 Brave 浏览器的 Puppeteer?

javascript - 滚动时更改 URL 哈希