NodeJS 在每个页面操作之间添加硬等待

plicqrtu  于 2023-06-05  发布在  Node.js
关注(0)|答案(1)|浏览(137)

我在Playwright和Node.js中为一个由供应商运行的旧的、有缺陷的Web应用程序创建测试脚本。我无法访问应用程序的代码,我的测试在供应商的网站上运行。
我不断发现通过添加硬等待可以解决的问题。由于我不明白的原因(因为我没有访问代码),网站似乎有问题的速度,Playwright执行的动作。
我想知道是否有办法在每个动作之间增加一个艰难的等待?有没有可能将page对象 Package 在一个调用waitForTimeout的 Package 器中,然后调用任何函数?

svmlkihl

svmlkihl1#

有2倍的答案:

1)在配置中设置动作和导航超时

以增加每个操作(包括导航)的超时。

import { defineConfig } from '@playwright/test';

export default defineConfig({
  use: {
    actionTimeout: 10 * 1000,
    navigationTimeout: 30 * 1000,
  },
});

如果需要,可以在步骤级别上进一步覆盖:

locator.click({ timeout: 10000 })

2)记录轨迹

找出哪些步骤需要更多时间,哪些步骤不需要更多时间,然后根据需要进一步探索根本原因

import { defineConfig } from '@playwright/test';
export default defineConfig({
  retries: process.env.CI ? 2 : 0, // set to 2 when running on CI
  ...
  use: {
    trace: 'on-first-retry', // record traces on first retry of each test
  },
});

推荐方式:

人们可能会尝试将其用作自动化中的标准方法来摆脱所有同步问题,但这是推荐的。我建议使用它来确认功能是否正常工作,并测量特定步骤的性能,以确定开发团队,以便他们可以解决潜在的问题。
总的来说,playwright的自动等待功能对于大多数健康的应用程序来说已经足够好了。

相关问题