fix: polish two Hermes follow-up cosmetics (invalid-selector wording, empty url glob)
Release binaries / Build macOS ARM64 (push) Has been cancelled
Release binaries / Build macOS x64 (push) Has been cancelled
Release binaries / Build Linux ARM64 (push) Has been cancelled
Release binaries / Build Linux musl ARM64 (push) Has been cancelled
Release binaries / Build Linux musl x64 (push) Has been cancelled
Release binaries / Build Linux x64 (push) Has been cancelled
Release binaries / Build Windows x64 (push) Has been cancelled
Release binaries / Attach binaries to GitHub Release (push) Has been cancelled

- invalid CSS selector now errors "Invalid selector '<sel>': <reason>" instead of
  the misleading "Element not found" — the coordinate path (resolve_by_selector)
  now also inspects exception_details, matching resolve_element_object_id.
- `wait --url ""` is rejected at parse time ("needs a non-empty pattern") rather
  than silently matching any URL. Unit test added.

Not changed: verb-less `find role X` defaulting to a click. That default is a
deliberate, tested decision (test_find_role_default_subaction_click_when_no_action);
changing it to locate-and-report is a design choice left to the maintainer.
This commit is contained in:
leeguooooo
2026-06-10 15:12:34 +09:00
parent cf4c27d13d
commit 9b1f98b966
5 changed files with 26 additions and 3 deletions
+6
View File
@@ -845,6 +845,12 @@ async fn resolve_by_selector(
)
.await?;
// A syntactically-invalid CSS selector makes querySelector throw — surface
// that as "invalid selector" rather than a misleading "element not found".
if let Some(ex) = result.exception_details {
return Err(format!("Invalid selector '{}': {}", selector, ex.text));
}
let val = result.result.value.unwrap_or(Value::Null);
let x = val.get("x").and_then(|v| v.as_f64());
let y = val.get("y").and_then(|v| v.as_f64());