WebDriver is the API for remote-controlling a Browser process, as used by WebPlatformTests. It has a lot of different endpoints, so to make it clear which ones are missing, here's a handy list!
To add an endpoint you'll need to modify the code in two places: The WebDriver end at Userland/Services/WebDriver
, and the Browser end at Userland/Services/WebContent/WebDriver*
. Comment here or refer to this issue in your PR to get your endpoints checked off the list. :^)
You can find the same table in the spec at https://w3c.github.io/webdriver/#endpoints
POST /session
New SessionDELETE /session/{session id}
Delete SessionGET /status
StatusGET /session/{session id}/timeouts
Get TimeoutsPOST /session/{session id}/timeouts
Set TimeoutsPOST /session/{session id}/url
Navigate ToGET /session/{session id}/url
Get Current URLPOST /session/{session id}/back
BackPOST /session/{session id}/forward
ForwardPOST /session/{session id}/refresh
RefreshGET /session/{session id}/title
Get TitleGET /session/{session id}/window
Get Window HandleDELETE /session/{session id}/window
Close WindowPOST /session/{session id}/window
Switch To WindowGET /session/{session id}/window/handles
Get Window HandlesPOST /session/{session id}/window/new
New WindowPOST /session/{session id}/frame
Switch To FramePOST /session/{session id}/frame/parent
Switch To Parent FrameGET /session/{session id}/window/rect
Get Window RectPOST /session/{session id}/window/rect
Set Window RectPOST /session/{session id}/window/maximize
Maximize WindowPOST /session/{session id}/window/minimize
Minimize WindowPOST /session/{session id}/window/fullscreen
Fullscreen WindowGET /session/{session id}/element/active
Get Active ElementGET /session/{session id}/element/{element id}/shadow
Get Element Shadow RootPOST /session/{session id}/element
Find ElementPOST /session/{session id}/elements
Find ElementsPOST /session/{session id}/element/{element id}/element
Find Element From ElementPOST /session/{session id}/element/{element id}/elements
Find Elements From ElementPOST /session/{session id}/shadow/{shadow id}/element
Find Element From Shadow RootPOST /session/{session id}/shadow/{shadow id}/elements
Find Elements From Shadow RootGET /session/{session id}/element/{element id}/selected
Is Element SelectedGET /session/{session id}/element/{element id}/attribute/{name}
Get Element AttributeGET /session/{session id}/element/{element id}/property/{name}
Get Element PropertyGET /session/{session id}/element/{element id}/css/{property name}
Get Element CSS ValueGET /session/{session id}/element/{element id}/text
Get Element TextGET /session/{session id}/element/{element id}/name
Get Element Tag NameGET /session/{session id}/element/{element id}/rect
Get Element RectGET /session/{session id}/element/{element id}/enabled
Is Element EnabledGET /session/{session id}/element/{element id}/computedrole
Get Computed RoleGET /session/{session id}/element/{element id}/computedlabel
Get Computed LabelPOST /session/{session id}/element/{element id}/click
Element ClickPOST /session/{session id}/element/{element id}/clear
Element ClearPOST /session/{session id}/element/{element id}/value
Element Send KeysGET /session/{session id}/source
Get Page SourcePOST /session/{session id}/execute/sync
Execute ScriptPOST /session/{session id}/execute/async
Execute Async ScriptGET /session/{session id}/cookie
Get All CookiesGET /session/{session id}/cookie/{name}
Get Named CookiePOST /session/{session id}/cookie
Add CookieDELETE /session/{session id}/cookie/{name}
Delete CookieDELETE /session/{session id}/cookie
Delete All CookiesPOST /session/{session id}/actions
Perform ActionsDELETE /session/{session id}/actions
Release ActionsPOST /session/{session id}/alert/dismiss
Dismiss AlertPOST /session/{session id}/alert/accept
Accept AlertGET /session/{session id}/alert/text
Get Alert TextPOST /session/{session id}/alert/text
Send Alert TextGET /session/{session id}/screenshot
Take ScreenshotGET /session/{session id}/element/{element id}/screenshot
Take Element ScreenshotPOST /session/{session id}/print
Print PagePay now to fund the work behind this issue.
Get updates on progress being made.
Maintainer is rewarded once the issue is completed.
You're funding impactful open source efforts
You want to contribute to this effort
You want to get funding like this too