# webdriver-downloader [![Crates.io][crates-badge]][crates-url] [crates-badge]: https://img.shields.io/crates/v/webdriver-downloader.svg [crates-url]: https://crates.io/crates/webdriver-downloader Library for webdriver download. Supports chromedriver(both Chrome and Chrome for Testing), geckodriver for Windows, Linux and macOS. ## Usage ### Using library provided driver downloader ```rust use webdriver_downloader::prelude::*; #[tokio::main] async fn main() { let driver_info = ChromedriverInfo::new_default().unwrap(); // Tries up to 5 versions of webdrivers if it is not installed. if !driver_info.is_installed() { driver_info.download_verify_install(5).await.unwrap(); } // webdriver is installed. // Default installation path is %USERPROFILE%/bin/chromedriver.exe ($HOME/bin/chromedriver for unix family) } ``` ### Implementing downloader for custom driver By implementing `WebdriverUrlInfo, WebdriverInstallationInfo, WebdriverVerificationInfo`, trait `WebdriverDownloadInfo` is automatically implemented for `struct CustomDriverInfo`. Then you can call `custom_driver_info.download_verify_install(max_attempts)`. ## Notes on runtime The library's implementation of `WebdriverVerificationInfo::verify_driver` uses `fantoccini` to verify installed driver. Since `fantoccini` requires `tokio` as runtime, you need to use `tokio` as runtime to use library provided driver downloader.