Ejemplo n.º 1
0
        internal Task <JsonElement?> EvaluateExpressionAsync(
            string script,
            bool isFunction,
            object arg,
            bool serializeArgument = false)
        {
            JsonSerializerOptions serializerOptions;

            if (serializeArgument)
            {
                serializerOptions = JsonExtensions.GetNewDefaultSerializerOptions(false);
                arg = new EvaluateArgument
                {
                    Handles = new List <EvaluateArgumentGuidElement>(),
                    Value   = arg,
                };
                serializerOptions.Converters.Add(new EvaluateArgumentConverter());
            }
            else
            {
                serializerOptions = Connection.GetDefaultJsonSerializerOptions(false);
            }

            return(Connection.SendMessageToServerAsync <JsonElement?>(
                       Guid,
                       "evaluateExpression",
                       new Dictionary <string, object>
            {
                ["expression"] = script,
                ["isFunction"] = isFunction,
                ["arg"] = arg,
            },
                       serializerOptions: serializerOptions));
        }
Ejemplo n.º 2
0
        internal static T ParseEvaluateResult <T>(JsonElement?result)
        {
            var serializerOptions = JsonExtensions.GetNewDefaultSerializerOptions(false);

            serializerOptions.Converters.Add(new EvaluateArgumentValueConverter <T>(null));

            return(result == null ? default : result.Value.ToObject <T>(serializerOptions));
        }
        internal JsonSerializerOptions GetDefaultJsonSerializerOptions()
        {
            var options = JsonExtensions.GetNewDefaultSerializerOptions();

            options.Converters.Add(new ChannelOwnerToGuidConverter(this));
            options.Converters.Add(new ChannelToGuidConverter(this));

            return(options);
        }
Ejemplo n.º 4
0
        internal JsonSerializerOptions GetDefaultJsonSerializerOptions(bool ignoreNullValues = false)
        {
            var options = JsonExtensions.GetNewDefaultSerializerOptions(ignoreNullValues);

            options.Converters.Add(new ChannelOwnerToGuidConverter(this));
            options.Converters.Add(new ChannelToGuidConverter(this));
            options.Converters.Add(new HttpMethodConverter());

            return(options);
        }
Ejemplo n.º 5
0
        internal Task <JSHandleChannel> WaitForFunctionAsync(
            string expression,
            bool isFunction,
            object arg,
            bool isPage,
            int?timeout,
            int?polling,
            bool serializeArgument = false)
        {
            JsonSerializerOptions serializerOptions;

            if (serializeArgument)
            {
                serializerOptions = JsonExtensions.GetNewDefaultSerializerOptions(false);
                arg = new EvaluateArgument
                {
                    Handles = new List <EvaluateArgumentGuidElement>(),
                    Value   = arg,
                };
                serializerOptions.Converters.Add(new EvaluateArgumentConverter());
            }
            else
            {
                serializerOptions = Connection.GetDefaultJsonSerializerOptions(false);
            }

            var args = new Dictionary <string, object>
            {
                ["expression"] = expression,
                ["isFunction"] = isFunction,
                ["arg"]        = arg,
                ["isPage"]     = isPage,
            };

            if (timeout != null)
            {
                args["timeout"] = timeout;
            }

            if (polling != null)
            {
                args["pollingInterval"] = polling;
            }

            return(Connection.SendMessageToServerAsync <JSHandleChannel>(
                       Guid,
                       "waitForFunction",
                       args,
                       serializerOptions: serializerOptions));
        }
        public override void Write(Utf8JsonWriter writer, EvaluateArgument value, JsonSerializerOptions options)
        {
            var serializerOptions = JsonExtensions.GetNewDefaultSerializerOptions(false);

            serializerOptions.Converters.Add(new EvaluateArgumentValueConverter <object>(value));

            writer.WriteStartObject();
            writer.WritePropertyName("value");

            if (value.Value == null)
            {
                writer.WriteStartObject();
                writer.WriteString("v", "null");
                writer.WriteEndObject();
            }
            else
            {
                JsonSerializer.Serialize(writer, value.Value, serializerOptions);
            }

            writer.WritePropertyName("handles");
            JsonSerializer.Serialize(writer, value.Handles, options);
            writer.WriteEndObject();
        }
Ejemplo n.º 7
0
        internal static string SerializeScriptCall(string script, object[] args)
        {
            args ??= Array.Empty <object>();

            if (script.IsJavascriptFunction())
            {
                return($"({script})({string.Join(",", args.Select(a => JsonSerializer.Serialize(a, JsonExtensions.GetNewDefaultSerializerOptions())))})");
            }

            if (args.Length > 0)
            {
                throw new PlaywrightSharpException("Cannot evaluate a string with arguments");
            }

            return(script);
        }