diff --git a/dotnet/src/webdriver/DevTools/DevToolsSession.cs b/dotnet/src/webdriver/DevTools/DevToolsSession.cs index 946afa47f0ffa..fc999fa87458f 100644 --- a/dotnet/src/webdriver/DevTools/DevToolsSession.cs +++ b/dotnet/src/webdriver/DevTools/DevToolsSession.cs @@ -24,6 +24,7 @@ using System.Net.Http; using System.Text.Json; using System.Text.Json.Nodes; +using System.Text.Json.Serialization; using System.Threading; using System.Threading.Tasks; @@ -284,7 +285,7 @@ public T GetVersionSpecificDomains() where T : DevToolsSessionDomains LogTrace("Sending {0} {1}: {2}", message.CommandId, message.CommandName, commandParameters.ToString()); - string contents = JsonSerializer.Serialize(message); + string contents = JsonSerializer.Serialize(message, DevToolsSessionSerializerContext.Default.DevToolsCommandData); this.pendingCommands.TryAdd(message.CommandId, message); await this.connection.SendData(contents).ConfigureAwait(false); @@ -413,7 +414,7 @@ private async Task InitializeProtocol(int requestedProtocolVersion) rawVersionInfo = await client.GetStringAsync("/json/version").ConfigureAwait(false); } - var versionInfo = JsonSerializer.Deserialize(rawVersionInfo) ?? throw new JsonException("/json/version endpoint returned null response"); + var versionInfo = JsonSerializer.Deserialize(rawVersionInfo, DevToolsSessionSerializerContext.Default.DevToolsVersionInfo) ?? throw new JsonException("/json/version endpoint returned null response"); this.EndpointAddress = versionInfo.WebSocketDebuggerUrl; if (requestedProtocolVersion == AutoDetectDevToolsProtocolVersion) @@ -664,4 +665,8 @@ private void LogError(string message, params object?[] args) } } } + + [JsonSerializable(typeof(DevToolsCommandData))] + [JsonSerializable(typeof(DevToolsVersionInfo))] + internal sealed partial class DevToolsSessionSerializerContext : JsonSerializerContext; } diff --git a/dotnet/src/webdriver/JavaScriptEngine.cs b/dotnet/src/webdriver/JavaScriptEngine.cs index b1a573490b9f4..bc916a584f931 100644 --- a/dotnet/src/webdriver/JavaScriptEngine.cs +++ b/dotnet/src/webdriver/JavaScriptEngine.cs @@ -25,6 +25,7 @@ using System.IO; using System.Linq; using System.Text.Json; +using System.Text.Json.Serialization; using System.Threading.Tasks; #nullable enable @@ -425,7 +426,7 @@ private void OnScriptBindingCalled(object? sender, BindingCalledEventArgs e) { if (e.Name == MonitorBindingName) { - DomMutationData valueChangeData = JsonSerializer.Deserialize(e.Payload) ?? throw new JsonException("DomMutationData returned null"); + DomMutationData valueChangeData = JsonSerializer.Deserialize(e.Payload, JsonEngineSerializerContext.Default.DomMutationData) ?? throw new JsonException("DomMutationData returned null"); var locator = By.CssSelector($"*[data-__webdriver_id='{valueChangeData.TargetId}']"); valueChangeData.Element = driver.FindElements(locator).FirstOrDefault(); @@ -461,4 +462,7 @@ private void OnConsoleApiCalled(object? sender, ConsoleApiCalledEventArgs e) } } } + + [JsonSerializable(typeof(DomMutationData))] + internal sealed partial class JsonEngineSerializerContext : JsonSerializerContext; }