mirror of
https://github.com/servo/servo.git
synced 2025-06-10 09:33:13 +00:00
Implement GetElementProperty WebDriver command
This commit is contained in:
parent
ef7b58f0cd
commit
e34a15c5ef
7 changed files with 107 additions and 18 deletions
|
@ -211,6 +211,7 @@ impl WebDriverExtensionCommand for ServoExtensionCommand {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
struct SendableWebDriverJSValue(pub WebDriverJSValue);
|
||||
|
||||
impl Serialize for SendableWebDriverJSValue {
|
||||
|
@ -1087,6 +1088,28 @@ impl Handler {
|
|||
}
|
||||
}
|
||||
|
||||
fn handle_element_property(
|
||||
&self,
|
||||
element: &WebElement,
|
||||
name: &str,
|
||||
) -> WebDriverResult<WebDriverResponse> {
|
||||
let (sender, receiver) = ipc::channel().unwrap();
|
||||
|
||||
let cmd =
|
||||
WebDriverScriptCommand::GetElementProperty(element.id.clone(), name.to_owned(), sender);
|
||||
self.browsing_context_script_command(cmd)?;
|
||||
|
||||
match receiver.recv().unwrap() {
|
||||
Ok(value) => Ok(WebDriverResponse::Generic(ValueResponse(
|
||||
serde_json::to_value(SendableWebDriverJSValue(value))?,
|
||||
))),
|
||||
Err(_) => Err(WebDriverError::new(
|
||||
ErrorStatus::StaleElementReference,
|
||||
"Unable to find element in document",
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
||||
fn handle_element_css(
|
||||
&self,
|
||||
element: &WebElement,
|
||||
|
@ -1510,6 +1533,9 @@ impl WebDriverHandler<ServoExtensionRoute> for Handler {
|
|||
WebDriverCommand::GetElementAttribute(ref element, ref name) => {
|
||||
self.handle_element_attribute(element, name)
|
||||
},
|
||||
WebDriverCommand::GetElementProperty(ref element, ref name) => {
|
||||
self.handle_element_property(element, name)
|
||||
},
|
||||
WebDriverCommand::GetCSSValue(ref element, ref name) => {
|
||||
self.handle_element_css(element, name)
|
||||
},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue