我正在将 Playwright 与 .NET 绑定一起使用。
曾经存在一个问题,通过点击进行导航可能会导致竞争条件,即:
await page.ClickAsync(".foo"); // indirectly causes a navigation
await page.WaitForNavigationAsync(); // race condition; times out
这是从 Puppeteer(Playwright 是其分支)继承的问题,建议使用相同的解决方法(即使它应该在 .NET 中工作,但由于 cs-js 互操作,需要此模式):
var task = page.WaitForNavigationAsync();
await page.ClickAsync(".foo");
await task;
从那时起,剧作家引入了WaitForURLAsync
await page.ClickAsync(".foo");
await page.WaitForURLAsync();
我认为这对其他人也有效。但我使用的是 .NET 绑定,并且在抓取 SPA 时看到了这个问题;当我使用旧的解决方法时,问题就消失了:
var task = page.WaitForURLAsync();
await page.ClickAsync(".foo");
await task;
我无法发布特定网站的复制品,因为它是机密的。但我想知道这个新的 .NET 方法的实现是否与 Node 版本具有相同的行为?有其他人遇到过这个问题吗?你采取了什么补救措施?