剧作家无头等待问题

问题描述 投票:0回答:1

我厌倦了在我的项目中使用 Playwright 时出现的“意外”问题和不同的问题。 我不明白测试用例步骤之间的默认超时发生了什么。

首先:

  1. 主要问题是,“无头”模式似乎运行得如此之快,并且我的测试用例的“等待可见”之类的一些步骤失败了,因为网址加载得如此之快,或者不是。 这很奇怪而且令人不舒服,因为我的测试结果的一致性不稳定,他们通过的浏览器,无头的他们失败或通过了,我不知道为什么。 (如果您有任何信息将会很有用♥)

  2. 我正在尝试使用“waitfor”功能来说“停止剧作家,别紧张,兄弟”但是......它不起作用。我想我没有正确使用此功能,但我想与您分享,并对剧作家的这种行为和无头处决有一些反馈。我再说一遍,这是在有头模式(浏览器打开)下工作,但不是无头模式(例如 github 执行)

示例:

        await navbars.topsearchBar.fill(myNumbertoString);
        await page.keyboard.press('Enter'); // I'M FILLING MY SEARCHBAR WITH A STRING AND I'M PRESSING ENTER

这里的应用程序正在加载一个新的 URL,一个新的“窗口”,所以,我想我可以命令剧作家“嘿,等到这个元素可见才能继续......”所以我正在做:

        await newView.dataContainer.waitFor( { state: 'visible' } ); // This is a simple container
        await page.waitForLoadState('domcontentloaded'); // I guess domcontentloaded as the word explains, I will be waiting untill the dom is completed to move forward
        await expect(newView.taskCompleted).not.toBeNull(); 

会发生什么?碰巧**无头执行**无法识别“等待状态可见”步骤。 执行不是等待,只是“失败”并停止测试用例。真的是太快了

** 如何使用 WaitFor 选项改善这种情况? 我应该如何考虑使用 Playwright 中的等待? 并行执行中有什么东西阻碍了我的执行吗?或类似的东西? **

好了,就这些了。非常感谢,希望我能得到一些答案,以便能够互相学习!

我试图命令剧作家等待,直到组件可见,继续测试用例,如果组件不可见则不要停止。因为显然组件不可见,所以 DOM 正在加载...

发生什么事了?我在无头模式下遇到不一致的等待错误。

github automation wait playwright headless
1个回答
0
投票

我曾经经历过同样的挫折,并通过艰难的方式吸取了教训,并且现在(大部分)正确地使用了 Playwright。这是我的建议:

  1. 首先,

    networkidle
    - 不鼓励,因为它会等待至少 500 毫秒没有网络连接。不要使用此方法进行测试,而是依靠 web 断言 来断言预期状态,而不是像
    toBeVisible

  2. 总的来说,我使用了一个简单的模式,例如 - 'AAA' - Assert - Act - Assert

在操作之前和操作之后断言预期状态,并且没有意外。

  1. 断言失败时,设置自动截图。
© www.soinside.com 2019 - 2024. All rights reserved.