PuppeteerSharp часто появляется исключение NavigationException
Использую PuppeteerSharp для автоматизации работы с сайтами. Очень часто появляется одно из следующих исключений.
Session closed:
PuppeteerSharp.NavigationException: Protocol error (Page.navigate): Session closed. Most likely the Page has been closed.Close reason: Target.detachedFromTarget ---> PuppeteerSharp.PuppeteerException: Protocol error (Page.navigate): Session closed. Most likely the Page has been closed.Close reason: Target.detachedFromTarget в PuppeteerSharp.CDPSession.d__32.MoveNext() в C:\projects\puppeteer-sharp\lib\PuppeteerSharp\CDPSession.cs:строка 94
Browser has disconnected:
PuppeteerSharp.NavigationException Navigation failed because browser has disconnected! (Connection failed to process Runtime.executionContextCreated. Frame 59298DE19E589971C033B202FE166228 not found. в PuppeteerSharp.Helpers.AsyncDictionaryHelper`2.<>c__DisplayClass4_0.b__0() в C:\projects\puppeteer-sharp\lib\PuppeteerSharp\Helpers\AsyncDictionaryHelper.cs:строка 34 в PuppeteerSharp.Helpers.TaskHelper.d__6 1.MoveNext() в C:\projects\puppeteer-sharp\lib\PuppeteerSharp\Helpers\TaskHelper.cs:строка 137
Но только при работе с каким-нибудь тяжёлым сайтом (например Avito).
Исключение может появится при вызове любого метода IBrowser (например WaitForSelectorAsync или ClickAsync). Прежде чем выполнять следующее действие всегда дожидаюсь завершения выполнения предыдущего (то есть не может одновременно быть 2 вызова WaitForSelectorAsync). Находил описания решения подобной проблемы где говорилось что в этом может быть всё дело.
Загружаю браузер следующим образом:
await new BrowserFetcher().DownloadAsync();
PuppeteerHeadful = await Puppeteer.LaunchAsync(new LaunchOptions {
Headless = false,
Product = Product.Chrome,
DefaultViewport = null,
Args = new[] {
"--disable-features=AudioServiceOutOfProcess",
"--disable-blink-features=AutomationControlled",
"--window-size=" + windowSize
}
});
Версия Chromium загружена самая последняя. Так же замечал проблему утечки памяти - после многократных запусков браузера даже если убить все процессы сильно увеличивается файл подкачки.