mirror of
https://github.com/servo/servo.git
synced 2025-08-07 06:25:32 +01:00
[WebDriver] Improve get active element (#37425)
Report `NoSuchElement` if the active element is null, according to spec. Testing: `./mach test-wpt -r --log-raw "D:\servo test log\all.txt" .\tests\wpt\tests\webdriver\tests\classic\get_active_element --product servodriver` Partly fixes: #37420. We can pass `get_active_element` test once #37424 is done. Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
This commit is contained in:
parent
1eb62a1ffb
commit
5d42ab05fb
1 changed files with 14 additions and 3 deletions
|
@ -1330,15 +1330,26 @@ impl Handler {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///<https://w3c.github.io/webdriver/#get-active-element>
|
||||||
fn handle_active_element(&self) -> WebDriverResult<WebDriverResponse> {
|
fn handle_active_element(&self) -> WebDriverResult<WebDriverResponse> {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
let cmd = WebDriverScriptCommand::GetActiveElement(sender);
|
let cmd = WebDriverScriptCommand::GetActiveElement(sender);
|
||||||
self.browsing_context_script_command(cmd)?;
|
self.browsing_context_script_command(cmd)?;
|
||||||
let value = wait_for_script_response(receiver)?
|
let value = wait_for_script_response(receiver)?
|
||||||
.map(|x| serde_json::to_value(WebElement(x)).unwrap());
|
.map(|x| serde_json::to_value(WebElement(x)).unwrap());
|
||||||
Ok(WebDriverResponse::Generic(ValueResponse(
|
// Step 4. If active element is a non-null element, return success
|
||||||
serde_json::to_value(value)?,
|
// with data set to web element reference object for session and active element.
|
||||||
)))
|
// Otherwise, return error with error code no such element.
|
||||||
|
if value.is_some() {
|
||||||
|
Ok(WebDriverResponse::Generic(ValueResponse(
|
||||||
|
serde_json::to_value(value)?,
|
||||||
|
)))
|
||||||
|
} else {
|
||||||
|
Err(WebDriverError::new(
|
||||||
|
ErrorStatus::NoSuchElement,
|
||||||
|
"No active element found",
|
||||||
|
))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_computed_role(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
fn handle_computed_role(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue