diff options
author | George Roman <george.roman.99@gmail.com> | 2019-06-17 16:35:34 +0300 |
---|---|---|
committer | George Roman <george.roman.99@gmail.com> | 2019-07-21 15:56:23 +0300 |
commit | dec73e4cea93d34736c925d4bd62e57b7d664f6b (patch) | |
tree | e377a927b1f60cf6d0ffa46a682ff14275deb5ae /components/webdriver_server/lib.rs | |
parent | 7d5b324bdac227d173d595116219cb8b9cbf1282 (diff) | |
download | servo-dec73e4cea93d34736c925d4bd62e57b7d664f6b.tar.gz servo-dec73e4cea93d34736c925d4bd62e57b7d664f6b.zip |
Implement tag name selector for FindElements WebDriver command
Diffstat (limited to 'components/webdriver_server/lib.rs')
-rw-r--r-- | components/webdriver_server/lib.rs | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/components/webdriver_server/lib.rs b/components/webdriver_server/lib.rs index b714520c8be..6b91f2d473c 100644 --- a/components/webdriver_server/lib.rs +++ b/components/webdriver_server/lib.rs @@ -902,20 +902,31 @@ impl Handler { Ok(WebDriverResponse::Void) } + // https://w3c.github.io/webdriver/#find-elements fn handle_find_elements( &self, parameters: &LocatorParameters, ) -> WebDriverResult<WebDriverResponse> { - if parameters.using != LocatorStrategy::CSSSelector { - return Err(WebDriverError::new( - ErrorStatus::UnsupportedOperation, - "Unsupported locator strategy", - )); + let (sender, receiver) = ipc::channel().unwrap(); + + match parameters.using { + LocatorStrategy::CSSSelector => { + let cmd = WebDriverScriptCommand::FindElementsCSS(parameters.value.clone(), sender); + self.browsing_context_script_command(cmd)?; + }, + LocatorStrategy::TagName => { + let cmd = + WebDriverScriptCommand::FindElementsTagName(parameters.value.clone(), sender); + self.browsing_context_script_command(cmd)?; + }, + _ => { + return Err(WebDriverError::new( + ErrorStatus::UnsupportedOperation, + "Unsupported locator strategy", + )); + }, } - let (sender, receiver) = ipc::channel().unwrap(); - let cmd = WebDriverScriptCommand::FindElementsCSS(parameters.value.clone(), sender); - self.browsing_context_script_command(cmd)?; match receiver.recv().unwrap() { Ok(value) => { let resp_value: Vec<Value> = value |