summaryrefslogtreecommitdiff
path: root/src/browser
diff options
context:
space:
mode:
Diffstat (limited to 'src/browser')
-rw-r--r--src/browser/mod.rs11
-rw-r--r--src/browser/web_browser.rs32
2 files changed, 43 insertions, 0 deletions
diff --git a/src/browser/mod.rs b/src/browser/mod.rs
index 1675595..1f44493 100644
--- a/src/browser/mod.rs
+++ b/src/browser/mod.rs
@@ -35,6 +35,17 @@ pub async unsafe fn get_faculties() -> WebDriverResult<Option<HashMap<String, St
Ok(None)
}
+/// Get the spaces (rooms) available to book
+pub async unsafe fn get_spaces() -> WebDriverResult<Option<HashMap<String, String>>> {
+ if let Some(driver) = &WEB_BROWSER {
+ if let Some(spaces) = driver.spaces().await? {
+ return Ok(Some(spaces));
+ }
+ }
+
+ Ok(None)
+}
+
pub async unsafe fn select_option(
klass: &str,
property_name: &str,
diff --git a/src/browser/web_browser.rs b/src/browser/web_browser.rs
index ffbdc13..f799866 100644
--- a/src/browser/web_browser.rs
+++ b/src/browser/web_browser.rs
@@ -115,6 +115,38 @@ impl Browser {
Ok(None)
}
+ /// Get all spaces for booking and return an `HashMap<key, value>` when `key` is the
+ /// key for that space inside the `select` tag and `value` is just the text of the option.
+ pub async fn spaces(&self) -> WebDriverResult<Option<HashMap<String, String>>> {
+ if let Some(_d) = &self.driver {
+ thread::sleep(time::Duration::from_millis(1000));
+
+ _d.find_element(By::Css(
+ "span[aria-labelledby='select2-spaceSelector-container']",
+ ))
+ .await?
+ .click()
+ .await?;
+
+ let list_elements = _d
+ .find_elements(By::Css("#select2-spaceSelector-results li"))
+ .await?;
+
+ let mut spaces_ids = HashMap::<String, String>::new();
+
+ for i in list_elements {
+ spaces_ids.insert(
+ i.get_attribute("data-select2-id").await.unwrap().unwrap(),
+ i.text().await.unwrap(),
+ );
+ }
+
+ return Ok(Some(spaces_ids));
+ }
+
+ Ok(None)
+ }
+
/// Select an option from a list of select elements
pub async fn select_option_from_list(
&self,