diff options
author | Kjetil Orbekk <kj@orbekk.com> | 2023-07-08 12:57:41 -0400 |
---|---|---|
committer | Kjetil Orbekk <kj@orbekk.com> | 2023-07-08 13:04:09 -0400 |
commit | 0a8bf0cbb82f16bce7b05e74dc1b85ca16dc15a5 (patch) | |
tree | bef482341a9083c2a6ffdb131f38fedff2469bb8 /src |
initial commit
Diffstat (limited to 'src')
-rw-r--r-- | src/main.rs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..8befc88 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,36 @@ +use std::{process::Command, error::Error, fs, env, time::Duration}; + +use fantoccini::{ClientBuilder, Locator}; +use log::info; +use tokio::time; + +static PROFILE_ROOT: &str = "/tmp/geckodriver-dashboard"; + +// let's set up the sequence of steps we want the browser to take +#[tokio::main] +async fn main() -> Result<(), Box<dyn Error>> { + pretty_env_logger::init(); + info!("Current directory: {}", env::current_dir()?.display()); + fs::create_dir(PROFILE_ROOT).ok(); + let mut geckodriver = Command::new("geckodriver") + .env("MOZ_REMOTE_SETTINGS_DEVTOOLS", "1") + .arg("--profile-root").arg("/tmp/geckodriver-dashboard").spawn()?; + + let c = ClientBuilder::native().connect("http://localhost:4444").await.expect("failed to connect to WebDriver"); + + loop { + let path = fs::canonicalize("index.html")?; + info!("Opening {}", path.display()); + c.goto(&format!("file://{}", path.display())).await?; + + let e = c.find(Locator::Css("#app")).await?; + let img = e.screenshot().await?; + + fs::write("index.png", img)?; + time::sleep(Duration::from_secs(15)).await; + } + + c.close().await?; + geckodriver.kill()?; + Ok(()) +} |