diff options
author | George Roman <george.roman.99@gmail.com> | 2019-03-03 10:28:10 +0200 |
---|---|---|
committer | George Roman <george.roman.99@gmail.com> | 2019-03-09 16:56:51 +0200 |
commit | 46cd0d17ee728c2ff28553e560b8d3458149f76c (patch) | |
tree | e33bfb1bcc2cf771ea5ebf9c03e2f0566627f31a /components/script/webdriver_handlers.rs | |
parent | db29cb01b0450c29d0ac45c6de2819a4f87e400a (diff) | |
download | servo-46cd0d17ee728c2ff28553e560b8d3458149f76c.tar.gz servo-46cd0d17ee728c2ff28553e560b8d3458149f76c.zip |
Implement WebDriver FindElementFromElement command
Diffstat (limited to 'components/script/webdriver_handlers.rs')
-rw-r--r-- | components/script/webdriver_handlers.rs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/components/script/webdriver_handlers.rs b/components/script/webdriver_handlers.rs index 3113fb0a527..89e2df12c9d 100644 --- a/components/script/webdriver_handlers.rs +++ b/components/script/webdriver_handlers.rs @@ -203,6 +203,23 @@ pub fn handle_find_elements_css( reply.send(node_ids).unwrap(); } +pub fn handle_find_element_element_css( + documents: &Documents, + pipeline: PipelineId, + element_id: String, + selector: String, + reply: IpcSender<Result<Option<String>, ()>>, +) { + let node_id = find_node_by_unique_id(documents, pipeline, element_id) + .ok_or(()) + .and_then(|node| { + node.query_selector(DOMString::from(selector)) + .map_err(|_| ()) + }) + .map(|node| node.map(|x| x.upcast::<Node>().unique_id())); + reply.send(node_id).unwrap(); +} + pub fn handle_focus_element( documents: &Documents, pipeline: PipelineId, |