aboutsummaryrefslogtreecommitdiffstats
path: root/components/webdriver_server/lib.rs
diff options
context:
space:
mode:
authorGeorge Roman <george.roman.99@gmail.com>2019-06-17 16:35:34 +0300
committerGeorge Roman <george.roman.99@gmail.com>2019-07-21 15:56:23 +0300
commitdec73e4cea93d34736c925d4bd62e57b7d664f6b (patch)
treee377a927b1f60cf6d0ffa46a682ff14275deb5ae /components/webdriver_server/lib.rs
parent7d5b324bdac227d173d595116219cb8b9cbf1282 (diff)
downloadservo-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.rs27
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