puppeteer-sharp icon indicating copy to clipboard operation
puppeteer-sharp copied to clipboard

Navigation failed because browser has disconnected!

Open LeeeJoe opened this issue 3 years ago • 1 comments

Description

I try using puppeteer-sharp with Firefox and getting this exception after page is loaded: https://bot.sannysoft.com/. At that time, page https://google.com was loaded without exceptions.

Navigation failed because browser has disconnected! (Page failed to process Runtime.consoleAPICalled. Error reading string. Unexpected token: StartObject. Path ''.. at Newtonsoft.Json.JsonReader.ReadAsString() at Newtonsoft.Json.JsonReader.ReadForType(JsonContract contract, Boolean hasConverter) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent) at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType) at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType) at Newtonsoft.Json.Linq.JToken.ToObject(Type objectType, JsonSerializer jsonSerializer) at Newtonsoft.Json.Linq.JToken.ToObject[T](JsonSerializer jsonSerializer) at PuppeteerSharp.Helpers.Json.JTokenExtensions.ToObject[T](JToken token, JsonSerializerSettings jsonSerializerSettings) in C:\projects\puppeteer-sharp\lib\PuppeteerSharp\Helpers\Json\JTokenExtensions.cs:line 41 at PuppeteerSharp.Helpers.Json.JTokenExtensions.ToObject[T](JToken token, Boolean camelCase) in C:\projects\puppeteer-sharp\lib\PuppeteerSharp\Helpers\Json\JTokenExtensions.cs:line 23 at PuppeteerSharp.Helpers.RemoteObjectHelper.ValueFromType[T](JToken value, RemoteObjectType objectType, Boolean stringify) in C:\projects\puppeteer-sharp\lib\PuppeteerSharp\Helpers\RemoteObjectHelper.cs:line 70 at PuppeteerSharp.Helpers.RemoteObjectHelper.ValueFromRemoteObject[T](RemoteObject remoteObject, Boolean stringify) in C:\projects\puppeteer-sharp\lib\PuppeteerSharp\Helpers\RemoteObjectHelper.cs:line 42 at PuppeteerSharp.Page.<>c.<AddConsoleMessageAsync>b__255_1(JSHandle i) in C:\projects\puppeteer-sharp\lib\PuppeteerSharp\Page.cs:line 2488 at System.Linq.Enumerable.SelectArrayIterator2.MoveNext() at System.String.JoinCore[T](ReadOnlySpan1 separator, IEnumerable1 values) at System.String.Join[T](String separator, IEnumerable1 values) at PuppeteerSharp.Page.AddConsoleMessageAsync(ConsoleType type, JSHandle[] values, StackTrace stackTrace) in C:\projects\puppeteer-sharp\lib\PuppeteerSharp\Page.cs:line 2501 at PuppeteerSharp.Page.Client_MessageReceived(Object sender, MessageEventArgs e) in C:\projects\puppeteer-sharp\lib\PuppeteerSharp\Page.cs:line 2229) at PuppeteerSharp.FrameManager.NavigateFrameAsync(Frame frame, String url, NavigationOptions options) in C:\projects\puppeteer-sharp\lib\PuppeteerSharp\FrameManager.cs:line 125 at XGoogleAccMakerPT.Program.PuppeteerApp.Run() in d:\source\repos\XGoogleAccMakerPT\XGoogleAccMakerPT\Program.cs:line 115

Complete minimal example reproducing the issue

            List<string> listArgs = new()
            {
                "--start-maximized"
            };

            List<string> listIgnoredDefaultArgs = new()
            {
                "--enable-automation"
            };

            LaunchOptions launchOptions = new()
            {
                Headless = false,
                SlowMo = 1,
                Product = isChrome ? Product.Chrome : Product.Firefox,
                Args = listArgs.ToArray(),
                IgnoredDefaultArgs = listIgnoredDefaultArgs.ToArray(),
            };

            browser = await Puppeteer.LaunchAsync(launchOptions);
            Page[] pages = await browser.PagesAsync();
            page = pages[0];
            page.DefaultTimeout = 5000;

            await page.DeleteCookieAsync();

            ScreenshotOptions screenshotOptions = new()
            {
                Type = ScreenshotType.Jpeg,
                Quality = 100,
                FullPage = false
            };

            Response response = null;
            try
            {
                response = await page.GoToAsync(siteUrl, WaitUntilNavigation.Load);              // Line of Exception #115
                Console.WriteLine($"URL: {response.Url}\nPage status: {response?.StatusText}");
                await page.ScreenshotAsync(Environment.CurrentDirectory + @"\Screenshot_01.jpg", screenshotOptions);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error: {ex.Message}\n{ex?.StackTrace}\nPage status: {response?.StatusText}");
            }
            finally
            {
                await page.ScreenshotAsync(Environment.CurrentDirectory + @"\Screenshot_01.jpg", screenshotOptions);
            }

Thank you very much!

LeeeJoe avatar Jan 17 '22 21:01 LeeeJoe

Thanks for reporting that. I'll take a look at it.

kblok avatar Jan 17 '22 21:01 kblok