-
-
Notifications
You must be signed in to change notification settings - Fork 8.6k
Open
Labels
A-needs-triagingA Selenium member will evaluate this soon!A Selenium member will evaluate this soon!C-dotnet.NET Bindings.NET BindingsI-defectSomething is not working as intendedSomething is not working as intended
Description
Description
Currently all events came from remote end are processed ordered and synchronously. It is good approach following well-known experience by users, according "classic events".
The following code represents self-blocking situation: e.Context.NavigateAsync("https://www.selenium.dev") wants to execute a method which depends on another event handler (e.ContinueAsync()). It is logical dead lock.
Reproducible Code
using var driver = new FirefoxDriver(new FirefoxOptions { UseWebSocketUrl = true });
await using var bidi = await driver.AsBiDiAsync();
var context = new BrowsingContext(bidi, driver.CurrentWindowHandle);
Console.WriteLine(await bidi.StatusAsync());
await bidi.Network.InterceptRequestAsync(async e =>
{
await e.ContinueAsync();
});
await context.NavigateAsync("https://www.selenium.dev", new() { Wait = ReadinessState.Complete });
await bidi.BrowsingContext.OnContextCreatedAsync(async e => await e.Context.NavigateAsync("https://www.selenium.dev"));Debugging Logs
23:15:07.621 TRACE WebSocketTransport: BiDi SND --> {"id":31,"method":"browsingContext.navigate","params":{"context":"cb5faabc-d9fd-448a-8697-6a3ec7710473","url":"https://www.selenium.dev"}}
23:15:07.686 TRACE WebSocketTransport: BiDi RCV <-- {"type":"event","method":"network.beforeRequestSent","params":{"context":"cb5faabc-d9fd-448a-8697-6a3ec7710473","isBlocked":true,"navigation":"8be3d577-078f-49ee-8527-bd54ae120d64","redirectCount":0,"request":{"request":"83-00fe42f3-e49a-4f10-8fcc-db6d26b81b4b","url":"https://www.selenium.dev/","method":"GET","bodySize":0,"headersSize":0,"headers":[{"name":"Host","value":{"type":"string","value":"www.selenium.dev"}},{"name":"User-Agent","value":{"type":"string","value":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:146.0) Gecko/20100101 Firefox/146.0"}},{"name":"Accept","value":{"type":"string","value":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"}},{"name":"Accept-Language","value":{"type":"string","value":"en-US,en;q=0.5"}},{"name":"Accept-Encoding","value":{"type":"string","value":"gzip, deflate, br, zstd"}},{"name":"Connection","value":{"type":"string","value":"keep-alive"}},{"name":"Upgrade-Insecure-Requests","value":{"type":"string","value":"1"}},{"name":"Sec-Fetch-Dest","value":{"type":"string","value":"document"}},{"name":"Sec-Fetch-Mode","value":{"type":"string","value":"navigate"}},{"name":"Sec-Fetch-Site","value":{"type":"string","value":"none"}},{"name":"Sec-Fetch-User","value":{"type":"string","value":"?1"}}],"cookies":[],"destination":"document","initiatorType":null,"timings":{"timeOrigin":0,"requestTime":1766088907679.986,"redirectStart":0,"redirectEnd":0,"fetchStart":0,"dnsStart":0,"dnsEnd":0,"connectStart":0,"connectEnd":0,"tlsStart":0,"tlsEnd":0,"requestStart":0,"responseStart":0,"responseEnd":0}},"timestamp":1766088907685,"intercepts":["ecf8ca39-ca52-4823-bb4f-4d4aa87c5c2c"],"initiator":{"type":"other"}}}
23:15:37.645 ERROR Broker: Unhandled error processing BiDi event handler: System.Threading.Tasks.TaskCanceledException: A task was canceled.
at OpenQA.Selenium.BiDi.Broker.ExecuteCommandAsync[TCommand,TResult](TCommand command, CommandOptions options, JsonTypeInfo`1 jsonCommandTypeInfo, JsonTypeInfo`1 jsonResultTypeInfo)
at OpenQA.Selenium.BiDi.BrowsingContext.BrowsingContextModule.NavigateAsync(BrowsingContext context, String url, NavigateOptions options)
at Program.<>c.<<<Main>$>b__0_1>d.MoveNext() in E:\Temp\ConsoleApp79\ConsoleApp79\Program.cs:line 26
--- End of stack trace from previous location ---
at OpenQA.Selenium.BiDi.AsyncEventHandler`1.InvokeAsync(EventArgs args)
at OpenQA.Selenium.BiDi.Broker.ProcessEventsAwaiterAsync()
23:15:37.645 TRACE WebSocketTransport: BiDi SND --> {"id":32,"method":"network.continueRequest","params":{"request":"83-00fe42f3-e49a-4f10-8fcc-db6d26b81b4b"}}
23:15:37.647 TRACE WebSocketTransport: BiDi RCV <-- {"type":"success","id":32,"result":{}}
23:15:37.673 TRACE WebSocketTransport: BiDi RCV <-- {"type":"success","id":31,"result":{"navigation":"8be3d577-078f-49ee-8527-bd54ae120d64","url":"https://www.selenium.dev/"}}
23:15:37.674 ERROR Broker: Unhandled error occured while processing remote message: System.InvalidOperationException: An attempt was made to transition a task to a final state when it had already completed.
at System.Threading.Tasks.TaskCompletionSource`1.SetException(Exception exception)
at OpenQA.Selenium.BiDi.Broker.ProcessReceivedMessage(Byte[] data)
at OpenQA.Selenium.BiDi.Broker.ReceiveMessagesAsync(CancellationToken cancellationToken)
Metadata
Metadata
Assignees
Labels
A-needs-triagingA Selenium member will evaluate this soon!A Selenium member will evaluate this soon!C-dotnet.NET Bindings.NET BindingsI-defectSomething is not working as intendedSomething is not working as intended