diff --git a/components/webdriver_server/lib.rs b/components/webdriver_server/lib.rs index c2df2d100a8..c9d27fe7574 100644 --- a/components/webdriver_server/lib.rs +++ b/components/webdriver_server/lib.rs @@ -1330,15 +1330,26 @@ impl Handler { } } + /// fn handle_active_element(&self) -> WebDriverResult { let (sender, receiver) = ipc::channel().unwrap(); let cmd = WebDriverScriptCommand::GetActiveElement(sender); self.browsing_context_script_command(cmd)?; let value = wait_for_script_response(receiver)? .map(|x| serde_json::to_value(WebElement(x)).unwrap()); - Ok(WebDriverResponse::Generic(ValueResponse( - serde_json::to_value(value)?, - ))) + // Step 4. If active element is a non-null element, return success + // 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 {