我有这个密码
public static async Task ClickSearchButton(IPage page)
{
//await page.ClickAsync("#searchBtn");
//Thread.Sleep(5000);
await Task.WhenAll(page.ClickAsync("#searchBtn"), page.WaitForNavigationAsync(new NavigationOptions() { WaitUntil = new[] { WaitUntilNavigation.Networkidle0 } }));
}
注解掉的部分大部分时间都能正常工作,但我想删除Sleep的部分。我在寻找解决方案时尝试了许多不同的方法,但似乎无法让它正常工作。当我运行这段代码时,它返回:
System.TimeoutException: Timeout of 30000 ms exceeded
我已经尝试了所有的等待导航选项(加载、DOM内容加载、Networkidle0、Networkidle2)。
我尝试做的是在我填写完表单之后,我点击搜索按钮。一个全新的页面不会加载,它只是填充在表单选项下面。我假设运行的是JavaScript。
1条答案
按热度按时间zbwhf8kr1#
你得到的错误是说Puppeteer在等待元素时超时了。因为它有时会工作,你可以增加超时时间。
如果查看源代码,您可以看到以两种方式引用超时https://github.com/hardkoded/puppeteer-sharp/blob/master/lib/PuppeteerSharp/FrameManager.cs#L98
您可以全局执行此操作-这将用于所有导航查询
或者,您可以设置选择器调用的超时以仅影响此查询