diff options
Diffstat (limited to 'src/browser')
| -rw-r--r-- | src/browser/mod.rs | 10 | ||||
| -rw-r--r-- | src/browser/web_browser.rs | 21 | 
2 files changed, 31 insertions, 0 deletions
diff --git a/src/browser/mod.rs b/src/browser/mod.rs index 4c7ef8e..528849d 100644 --- a/src/browser/mod.rs +++ b/src/browser/mod.rs @@ -72,3 +72,13 @@ pub async unsafe fn get_timetable() -> WebDriverResult<Option<HashMap<String, St      Ok(None)  } + +pub async unsafe fn select_table_row(index: &str) -> WebDriverResult<bool> { +    if let Some(driver) = &WEB_BROWSER { +        let result = driver.select_timetable_row(index).await?; + +        return Ok(result); +    } + +    Ok(false) +} diff --git a/src/browser/web_browser.rs b/src/browser/web_browser.rs index 5a855d5..10dacb7 100644 --- a/src/browser/web_browser.rs +++ b/src/browser/web_browser.rs @@ -188,6 +188,27 @@ impl Browser {          Ok(None)      } + +    // Select the row for the timetable booking +    pub async unsafe fn select_timetable_row(&self, index: &str) -> WebDriverResult<bool> { +        if let Some(_d) = &self.driver { +            _d.find_element(By::Css( +                &format!("#slotContainerTable tr:nth-child({}) td", index).to_owned()[..], +            )) +            .await? +            .click() +            .await?; +            thread::sleep(time::Duration::from_millis(2000)); +            _d.find_element(By::Css("#partialQuestionYesNoConfirmButton:last-child")) +                .await? +                .click() +                .await?; + +            return Ok(true); +        } + +        Ok(false) +    }  }  /// The static unsafe variable used to open a web browser  |