我在Playwright和Node.js中为一个由供应商运行的旧的、有缺陷的Web应用程序创建测试脚本。我无法访问应用程序的代码,我的测试在供应商的网站上运行。我不断发现通过添加硬等待可以解决的问题。由于我不明白的原因(因为我没有访问代码),网站似乎有问题的速度,Playwright执行的动作。我想知道是否有办法在每个动作之间增加一个艰难的等待?有没有可能将page对象 Package 在一个调用waitForTimeout的 Package 器中,然后调用任何函数?
page
waitForTimeout
svmlkihl1#
有2倍的答案:
以增加每个操作(包括导航)的超时。
import { defineConfig } from '@playwright/test'; export default defineConfig({ use: { actionTimeout: 10 * 1000, navigationTimeout: 30 * 1000, }, });
如果需要,可以在步骤级别上进一步覆盖:
locator.click({ timeout: 10000 })
找出哪些步骤需要更多时间,哪些步骤不需要更多时间,然后根据需要进一步探索根本原因
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的自动等待功能对于大多数健康的应用程序来说已经足够好了。
1条答案
按热度按时间svmlkihl1#
有2倍的答案:
1)在配置中设置动作和导航超时
以增加每个操作(包括导航)的超时。
如果需要,可以在步骤级别上进一步覆盖:
2)记录轨迹
找出哪些步骤需要更多时间,哪些步骤不需要更多时间,然后根据需要进一步探索根本原因
推荐方式:
人们可能会尝试将其用作自动化中的标准方法来摆脱所有同步问题,但这是不推荐的。我建议使用它来确认功能是否正常工作,并测量特定步骤的性能,以确定开发团队,以便他们可以解决潜在的问题。
总的来说,playwright的自动等待功能对于大多数健康的应用程序来说已经足够好了。