INNER CODE UNIT · Rust
xy
keon/browser-control · src/actions.rs:11
pub fn xy(s: &str) -> Option<(i64, i64)> {
let (a, b) = s.split_once(',')?;
Some((a.trim().parse().ok()?, b.trim().parse().ok()?))
}
/// `@e3` snapshot refs become attribute selectors; everything else is CSS.
pub fn ref_selector(target: &str) -> String {
match target.strip_prefix('@') {
Some(r) => format!(r#"[data-browser-control-ref="{r}"]"#),
None => target.to_string(),
}
}
pub async fn mouse_click(c: &mut Cdp, x: i64, y: i64, button: &str, clicks: u64) -> Result<()> {
if !["left", "right", "middle", "back", "forward"].contains(&button) {
bail!("bad button {button:?}; use left/right/middle/back/forward")
}
for t in ["mousePressed", "mouseReleased"] {