diff --git a/Userland/Libraries/LibWeb/WebDriver/ElementReference.cpp b/Userland/Libraries/LibWeb/WebDriver/ElementReference.cpp index f0fc2f657e1..621d348201a 100644 --- a/Userland/Libraries/LibWeb/WebDriver/ElementReference.cpp +++ b/Userland/Libraries/LibWeb/WebDriver/ElementReference.cpp @@ -40,23 +40,22 @@ JsonObject web_element_reference_object(Web::DOM::Node const& element) // 3. Return a JSON Object initialized with a property with name identifier and value reference. JsonObject object; - object.set("name"sv, identifier); - object.set("value"sv, reference); + object.set(identifier, reference); return object; } +ByteString extract_web_element_reference(JsonObject const& object) +{ + return object.get_byte_string(web_element_identifier).release_value(); +} + // https://w3c.github.io/webdriver/#dfn-represents-a-web-element bool represents_a_web_element(JsonValue const& value) { // An ECMAScript Object represents a web element if it has a web element identifier own property. if (!value.is_object()) return false; - - auto const& object = value.as_object(); - if (!object.has_string("name"sv) || !object.has_string("value"sv)) - return false; - - return object.get_byte_string("name"sv) == web_element_identifier; + return value.as_object().has_string(web_element_identifier); } // https://w3c.github.io/webdriver/#dfn-get-a-known-connected-element @@ -105,8 +104,7 @@ JsonObject shadow_root_reference_object(Web::DOM::ShadowRoot const& shadow_root) // 3. Return a JSON Object initialized with a property with name identifier and value reference. JsonObject object; - object.set("name"sv, identifier); - object.set("value"sv, reference); + object.set(identifier, reference); return object; } diff --git a/Userland/Libraries/LibWeb/WebDriver/ElementReference.h b/Userland/Libraries/LibWeb/WebDriver/ElementReference.h index 5ac4123af87..88c3c95672b 100644 --- a/Userland/Libraries/LibWeb/WebDriver/ElementReference.h +++ b/Userland/Libraries/LibWeb/WebDriver/ElementReference.h @@ -16,6 +16,7 @@ namespace Web::WebDriver { ByteString get_or_create_a_web_element_reference(Web::DOM::Node const& element); JsonObject web_element_reference_object(Web::DOM::Node const& element); +ByteString extract_web_element_reference(JsonObject const&); bool represents_a_web_element(JsonValue const& value); ErrorOr get_known_connected_element(StringView element_id); bool is_element_stale(Web::DOM::Node const& element); diff --git a/Userland/Services/WebContent/WebDriverConnection.cpp b/Userland/Services/WebContent/WebDriverConnection.cpp index 8f762c90de5..18db9e64593 100644 --- a/Userland/Services/WebContent/WebDriverConnection.cpp +++ b/Userland/Services/WebContent/WebDriverConnection.cpp @@ -550,7 +550,7 @@ Messages::WebDriverClient::SwitchToFrameResponse WebDriverConnection::switch_to_ // -> id represents a web element else if (id.is_object()) { - auto element_id = id.as_object().get_byte_string("value"sv).release_value(); + auto element_id = Web::WebDriver::extract_web_element_reference(id.as_object()); // 1. If session's current browsing context is no longer open, return error with error code no such window. TRY(ensure_current_browsing_context_is_open());