From 96c1ce2dd65487fadcaaac3bb298be15f5bce625 Mon Sep 17 00:00:00 2001 From: George Roman Date: Sun, 16 Jun 2019 13:22:25 +0300 Subject: [PATCH 1/2] Implement SwitchToWindow WebDriver command --- components/webdriver_server/lib.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/components/webdriver_server/lib.rs b/components/webdriver_server/lib.rs index dcce929652b..952c3d52552 100644 --- a/components/webdriver_server/lib.rs +++ b/components/webdriver_server/lib.rs @@ -44,6 +44,7 @@ use std::thread; use std::time::Duration; use uuid::Uuid; use webdriver::capabilities::{Capabilities, CapabilitiesMatching}; +use webdriver::command::SwitchToWindowParameters; use webdriver::command::{ AddCookieParameters, GetParameters, JavascriptCommandParameters, LocatorParameters, }; @@ -841,6 +842,23 @@ impl Handler { self.switch_to_frame(WebDriverFrameId::Parent) } + // https://w3c.github.io/webdriver/#switch-to-window + fn handle_switch_to_window( + &mut self, + parameters: &SwitchToWindowParameters, + ) -> WebDriverResult { + // For now we assume there is only one window which has the current + // session's id as window id + if parameters.handle == self.session.as_ref().unwrap().id.to_string() { + Ok(WebDriverResponse::Void) + } else { + Err(WebDriverError::new( + ErrorStatus::NoSuchWindow, + "No such window", + )) + } + } + fn switch_to_frame( &mut self, frame_id: WebDriverFrameId, @@ -1435,6 +1453,9 @@ impl WebDriverHandler for Handler { self.handle_switch_to_frame(parameters) }, WebDriverCommand::SwitchToParentFrame => self.handle_switch_to_parent_frame(), + WebDriverCommand::SwitchToWindow(ref parameters) => { + self.handle_switch_to_window(parameters) + }, WebDriverCommand::FindElement(ref parameters) => self.handle_find_element(parameters), WebDriverCommand::FindElements(ref parameters) => self.handle_find_elements(parameters), WebDriverCommand::FindElementElement(ref element, ref parameters) => { From 15bd852b5280f844f09ad95620f78bccfe08ba5f Mon Sep 17 00:00:00 2001 From: George Roman Date: Sun, 16 Jun 2019 14:55:41 +0300 Subject: [PATCH 2/2] Implement dummy DismissAlert WebDriver command --- components/webdriver_server/lib.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/components/webdriver_server/lib.rs b/components/webdriver_server/lib.rs index 952c3d52552..d9c574e2f75 100644 --- a/components/webdriver_server/lib.rs +++ b/components/webdriver_server/lib.rs @@ -1169,6 +1169,12 @@ impl Handler { } } + // https://w3c.github.io/webdriver/#dismiss-alert + fn handle_dismiss_alert(&mut self) -> WebDriverResult { + // Since user prompts are not yet implement this will always succeed + Ok(WebDriverResponse::Void) + } + fn handle_get_timeouts(&mut self) -> WebDriverResult { let session = self .session @@ -1483,6 +1489,7 @@ impl WebDriverHandler for Handler { WebDriverCommand::ElementSendKeys(ref element, ref keys) => { self.handle_element_send_keys(element, keys) }, + WebDriverCommand::DismissAlert => self.handle_dismiss_alert(), WebDriverCommand::DeleteCookies => self.handle_delete_cookies(), WebDriverCommand::GetTimeouts => self.handle_get_timeouts(), WebDriverCommand::SetTimeouts(ref x) => self.handle_set_timeouts(x),