[[rust-headless-chrome]]を使ってみた。
```console
cargo init rust-headless-chrome-use
cd rust-headless-chrome-use
```
`Cargo.toml`に追加。
```toml
[dependencies]
headless_chrome = "0.9.0"
failure = "0.1.8"
```
`main.rs`に実装。
```rust
use headless_chrome::{protocol::page::ScreenshotFormat, Browser, LaunchOptionsBuilder};
fn main() -> Result<(), failure::Error> {
// 1920x1080のウィンドウサイズでブラウザを立ち上げ
let options = LaunchOptionsBuilder::default()
.window_size(Some((1920, 1080)))
.build()
.expect("Fail to build");
let browser = Browser::new(options)?;
// rust-headless-chromeのページに遷移
let tab = browser.wait_for_initial_tab()?;
tab.navigate_to("https://github.com/atroche/rust-headless-chrome")?;
tab.wait_until_navigated()?;
// PNGでキャプチャを撮影してファイルに保存
let png = tab.capture_screenshot(ScreenshotFormat::PNG, None, true)?;
std::fs::write("./page.png", png)?;
Ok(())
}
```
実行すると`page.png`が作成される。
```console
cargo run
```
> [!attention]
> [[IntelliJ Rust]]では`LaunchOptionsBuilder`が認識されなかったので補完が使えなかった。
## 参考
- [Rustでブラウザを操作する「rust\-headless\-chrome」を試してみた \| DevelopersIO](https://dev.classmethod.jp/articles/rust-headless-chrome/)