mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 16:27:35 +00:00
WebDriver: Add POST /session/{id}/element
endpoint
This allows you to query for elements in the active document! The IDs of matching elements are returned through the WebDriver interface, for now there's nothing to do with this information. This introduces a `LocalElement` to the Session, which for now only holds the ID of a real browser-side element. Once more data of elements are available to the Session, they can be stored alongside in this struct. Fixme's introduced are: - Only CSS selector location strategy is implemented for now - `get_or_create_a_web_element_reference` returns the elements ID instead of a UUID generated in a spec way.
This commit is contained in:
parent
5d762bd448
commit
5fcf00f30d
4 changed files with 221 additions and 0 deletions
|
@ -30,6 +30,7 @@ Vector<Client::Route> Client::s_routes = {
|
|||
{ HTTP::HttpRequest::Method::POST, { "session", ":session_id", "refresh" }, &Client::handle_refresh },
|
||||
{ HTTP::HttpRequest::Method::GET, { "session", ":session_id", "title" }, &Client::handle_get_title },
|
||||
{ HTTP::HttpRequest::Method::DELETE, { "session", ":session_id", "window" }, &Client::handle_delete_window },
|
||||
{ HTTP::HttpRequest::Method::POST, { "session", ":session_id", "element" }, &Client::handle_find_element },
|
||||
{ HTTP::HttpRequest::Method::GET, { "session", ":session_id", "cookie" }, &Client::handle_get_all_cookies },
|
||||
{ HTTP::HttpRequest::Method::GET, { "session", ":session_id", "cookie", ":name" }, &Client::handle_get_named_cookie },
|
||||
{ HTTP::HttpRequest::Method::POST, { "session", ":session_id", "cookie" }, &Client::handle_add_cookie },
|
||||
|
@ -503,6 +504,19 @@ ErrorOr<JsonValue, HttpError> Client::handle_delete_window(Vector<StringView> co
|
|||
return make_json_value(JsonValue());
|
||||
}
|
||||
|
||||
// 12.3.2 Find Element, https://w3c.github.io/webdriver/#dfn-find-element
|
||||
// POST /session/{session id}/element
|
||||
ErrorOr<JsonValue, HttpError> Client::handle_find_element(Vector<StringView> const& parameters, JsonValue const& payload)
|
||||
{
|
||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/element");
|
||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
||||
|
||||
// NOTE: Spec steps handled in Session::find_element().
|
||||
auto result = TRY(session->find_element(payload));
|
||||
|
||||
return make_json_value(result);
|
||||
}
|
||||
|
||||
// 14.1 Get All Cookies, https://w3c.github.io/webdriver/#dfn-get-all-cookies
|
||||
// GET /session/{session id}/cookie
|
||||
ErrorOr<JsonValue, HttpError> Client::handle_get_all_cookies(Vector<StringView> const& parameters, JsonValue const&)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue