pub struct IosDriver { /* private fields */ }Expand description
v6.0 c1a — renamed from SimctlDriver to IosDriver to make platform
explicit in the cross-platform Driver trait architecture (see
docs/plan-cold/v6-cross-platform-yaml-design.md §7). Type alias
pub type SimctlDriver = IosDriver (in lib.rs re-export) keeps
existing v5.x callers working without source-edit ripple.
Driver wrapping HttpRunnerClient with host-side resolve dispatch.
Implementations§
Source§impl IosDriver
impl IosDriver
pub fn new(runner: HttpRunnerClient) -> Self
pub fn runner(&self) -> &HttpRunnerClient
Sourcepub fn runner_mut(&mut self) -> &mut HttpRunnerClient
pub fn runner_mut(&mut self) -> &mut HttpRunnerClient
v0.2.1 — mutable accessor for the wrapped client. Used by the
Driver-trait pass-through (set_target_bundle_id /
set_auto_activate) so the client’s per-request context can be
mutated after driver construction.
Sourcepub fn with_target_bundle_id<S: Into<String>>(self, bundle: S) -> Self
pub fn with_target_bundle_id<S: Into<String>>(self, bundle: S) -> Self
v0.2.1 — set the target bundle id sent to the runner on every
request. Threads --bundle-id from the CLI (via FlowArgs)
down to the wire so the runner’s per-request rebind logic can
resolve to the right XCUIApplication. gol-611-v0.2.1 §Phase C.
Sourcepub fn with_auto_activate(self, activate: bool) -> Self
pub fn with_auto_activate(self, activate: bool) -> Self
v0.2.1 — enable App-Activate: true on every request. Forces
the runner to call .activate() on the resolved target before
each operation. Wired from smix run --activate.
Sourcepub async fn tree(
&self,
include: Option<IncludeScope>,
) -> Result<A11yNode, ExpectationFailure>
pub async fn tree( &self, include: Option<IncludeScope>, ) -> Result<A11yNode, ExpectationFailure>
Fetch full a11y tree (passthru to GET /tree).
Sourcepub async fn describe(&self) -> Result<ScreenDescription, ExpectationFailure>
pub async fn describe(&self) -> Result<ScreenDescription, ExpectationFailure>
Aggregate ScreenDescription (DFS visible summaries; no
screenshot here — caller adds when needed).
Sourcepub async fn find_one(
&self,
selector: &Selector,
include: Option<IncludeScope>,
) -> Result<Option<A11yNode>, ExpectationFailure>
pub async fn find_one( &self, selector: &Selector, include: Option<IncludeScope>, ) -> Result<Option<A11yNode>, ExpectationFailure>
Resolve selector → single node (passthru-ish: driver.tree + resolver).
Sourcepub async fn find_norm_coord(
&self,
selector: &Selector,
) -> Result<Option<(f64, f64)>, ExpectationFailure>
pub async fn find_norm_coord( &self, selector: &Selector, ) -> Result<Option<(f64, f64)>, ExpectationFailure>
v5.20 c1 — Resolve selector → its centroid as viewport-normalized
(nx, ny) in [0, 1]. None when selector resolves no node OR
matched node has empty / offscreen frame. Used by adapter
AnchorRelative dispatch to find an anchor’s center before adding
(dx, dy) shift. L6 sense layer per a11y-i18n master plan §1.
Sourcepub async fn find_all(
&self,
selector: &Selector,
include: Option<IncludeScope>,
) -> Result<Vec<A11yNode>, ExpectationFailure>
pub async fn find_all( &self, selector: &Selector, include: Option<IncludeScope>, ) -> Result<Vec<A11yNode>, ExpectationFailure>
Resolve selector → all matching nodes.
Sourcepub async fn find(
&self,
selector: &Selector,
include: Option<IncludeScope>,
) -> Result<bool, ExpectationFailure>
pub async fn find( &self, selector: &Selector, include: Option<IncludeScope>, ) -> Result<bool, ExpectationFailure>
Boolean existence quick-probe (v1.4 + v3.5 c2 fallback).
Selector-type dispatch:
- Text selectors with no spatial / index modifiers → runner
/findroute (Apple element query, no full-tree snapshot — the v1.9 fast path). - Id / Label / Role / Focused / Anchor selectors, and Text
with spatial (
below/near/ …) or index (nth/first/last) modifiers → host-resolve fallback:tree() + resolve_selector_all()client-side. The runner/findroute only knows how to query by text predicate, so anything richer has to ride on the full tree snapshot.
v4.1 c1 — transient transport retry parity with wait_for. Both
dispatch branches poll within TOTAL_TIMEOUT_MS on /find 500
or /tree 500 (sim still launching / runner re-attach / etc),
matching the v3.17 c1 wait_for transient-retry pattern.
Sourcepub async fn system_popups(
&self,
include: Option<IncludeScope>,
) -> Result<Vec<SystemPopup>, ExpectationFailure>
pub async fn system_popups( &self, include: Option<IncludeScope>, ) -> Result<Vec<SystemPopup>, ExpectationFailure>
GET /system-popups passthru.
Sourcepub async fn system_popup_action(
&self,
popup_id: &str,
button_id: &str,
) -> Result<bool, ExpectationFailure>
pub async fn system_popup_action( &self, popup_id: &str, button_id: &str, ) -> Result<bool, ExpectationFailure>
POST /system-popup-action passthru (v4.2 c2 — G9 act side).
Returns Ok(true) when the runner matched and tapped, Ok(false)
on 404 not_found. Transport errors map to ExpectationFailure.
Sourcepub async fn tap(
&self,
selector: &Selector,
include: Option<IncludeScope>,
) -> Result<(), ExpectationFailure>
pub async fn tap( &self, selector: &Selector, include: Option<IncludeScope>, ) -> Result<(), ExpectationFailure>
Tap a selector. v1.5 c5i-a S6 + v1.6 c5: host-side resolve → centroid → runner.tap_at_norm_coord (Apple native event chain). 5s implicit wait + retry (v1.5 c5i-d wait-and-tap merged).
The resolve+centroid+normalize pipeline lives in the
smix_host_coord_resolver stone (v3.2 c5); this method
orchestrates the smix-specific 5s implicit-wait loop +
AI-readable failure rendering + runner injection.
Sourcepub async fn tap_with_mode(
&self,
selector: &Selector,
mode: TapMode,
include: Option<IncludeScope>,
) -> Result<(), ExpectationFailure>
pub async fn tap_with_mode( &self, selector: &Selector, mode: TapMode, include: Option<IncludeScope>, ) -> Result<(), ExpectationFailure>
Tap a selector via an explicit dispatch mode. Used to opt into the
runner-side daemonProxySynthesize path for RN Pressable buttons
whose RCTTouchHandler gesture recognizer does not fire onPress
when the host-side tap_at_norm_coord Apple native event chain is
used (v4.0 c3 swift G8 fix).
TapMode::DaemonProxySynthesize routes through POST /tap (runner
resolves selector + synthesizes via XCTRunnerDaemonSession .daemonProxy._XCT_synthesizeEvent:completion:). The existing
SimctlDriver::tap method keeps the v1.6 c5 host-resolve +
tap_at_norm_coord default for callers that don’t need the
daemonProxy alternative.
Sourcepub async fn double_tap(
&self,
selector: &Selector,
include: Option<IncludeScope>,
) -> Result<(), ExpectationFailure>
pub async fn double_tap( &self, selector: &Selector, include: Option<IncludeScope>, ) -> Result<(), ExpectationFailure>
v5.2 c3 — double-tap a selector via swift sim-side
XCUIElement.doubleTap(). 5s implicit-wait + retry on transport
(mirrors Self::tap_with_mode). Maestro doubleTapOn 同源.
Sourcepub async fn long_press(
&self,
selector: &Selector,
duration: Duration,
include: Option<IncludeScope>,
) -> Result<(), ExpectationFailure>
pub async fn long_press( &self, selector: &Selector, duration: Duration, include: Option<IncludeScope>, ) -> Result<(), ExpectationFailure>
v5.2 c3 — long-press a selector for duration via swift sim-side
XCUIElement.press(forDuration:). 5s implicit-wait + retry on
transport. Maestro longPressOn 同源.
Sourcepub async fn set_orientation(
&self,
orientation: Orientation,
) -> Result<(), ExpectationFailure>
pub async fn set_orientation( &self, orientation: Orientation, ) -> Result<(), ExpectationFailure>
v5.2 c5 — rotate sim via swift XCUIDevice.shared.orientation.
Routes to runner-client set_orientation → POST /set-orientation.
Sourcepub async fn fill(
&self,
selector: &Selector,
text: &str,
include: Option<IncludeScope>,
) -> Result<(), ExpectationFailure>
pub async fn fill( &self, selector: &Selector, text: &str, include: Option<IncludeScope>, ) -> Result<(), ExpectationFailure>
Fill text into the focused / matched input.
v3.6 c1 G1 fix + c2 selector-type dispatch.
chunked-fill (G1): the swift runner’s daemon _XCT_sendString
path bursts every keystroke at up to 200 chars/sec, which on
real-sim outraces React Native’s onChangeText debounce on the
main thread — only the leading 2-3 keystrokes commit before
later ones are dropped by the JS thread reconciler. Per
CLAUDE.md §13 + v3.x cycle constraint (swift sim-side
untouched), the fix is host-side: split text into 1-char
chunks and post each to runner /fill separately, with a
INTER_CHAR_PAUSE_MS gap so the JS thread can flush its
onChangeText callback before the next keystroke fires.
selector-type dispatch (c2 — mirrors find()): runner
/fill only accepts text selectors (selector.text field or
the _focused_ magic). For Id / Label / Role / Anchor /
Text-with-modifiers selectors, host-resolve + tap the target
first to give it keyboard focus, then fill via the _focused_
magic. Text-without-modifiers selectors take the fast path
(direct chunked fill).
Sourcepub async fn clear(
&self,
selector: &Selector,
include: Option<IncludeScope>,
) -> Result<(), ExpectationFailure>
pub async fn clear( &self, selector: &Selector, include: Option<IncludeScope>, ) -> Result<(), ExpectationFailure>
Clear the focused / matched input.
v3.7 c1 — selector-type dispatch (mirrors fill() v3.6 c2).
The runner /clear route only accepts text selectors (selector.text
field) or the _focused_ magic. For Id / Label / Role / Anchor /
Text-with-modifiers selectors, host-resolve + tap the target first
so it owns keyboard focus, then clear via the _focused_ magic
(single round-trip — clear is not chunked like fill).
Sourcepub async fn press_key(&self, key: KeyName) -> Result<(), ExpectationFailure>
pub async fn press_key(&self, key: KeyName) -> Result<(), ExpectationFailure>
POST /press-key passthru.
Sourcepub async fn scroll(
&self,
selector: &Selector,
direction: SwipeDirection,
) -> Result<(), ExpectationFailure>
pub async fn scroll( &self, selector: &Selector, direction: SwipeDirection, ) -> Result<(), ExpectationFailure>
Host-side scroll-until-visible loop (v1.5 c5i-d). Alternates
driver.tree + resolve_selector (host-side probe) with
runner.swipe_once (single-swipe runner gesture). Up to 30 swipes
or 20s timeout.
Sourcepub async fn swipe_once(
&self,
direction: SwipeDirection,
) -> Result<(), ExpectationFailure>
pub async fn swipe_once( &self, direction: SwipeDirection, ) -> Result<(), ExpectationFailure>
POST /swipe-once passthru.
Sourcepub async fn hide_keyboard(&self) -> Result<(), ExpectationFailure>
pub async fn hide_keyboard(&self) -> Result<(), ExpectationFailure>
POST /hide-keyboard passthru.
Sourcepub async fn back(&self) -> Result<(), ExpectationFailure>
pub async fn back(&self) -> Result<(), ExpectationFailure>
POST /back passthru.
Sourcepub async fn tap_at_norm_coord(
&self,
nx: f64,
ny: f64,
) -> Result<(), ExpectationFailure>
pub async fn tap_at_norm_coord( &self, nx: f64, ny: f64, ) -> Result<(), ExpectationFailure>
Tap at normalized (nx, ny) coordinates — escape hatch for
coord-based maestro yaml port (v3.16 §9 #3 lift; counting-fullscreen
point: "50%,95%" + merlin-input point: "50%,90%" etc.).
(nx, ny) must be in [0, 1] (normalized to viewport). The runner
converts to device pixels via Apple native event chain (same path
as the regular tap() centroid pipeline since v1.6 c5).
Escape hatch only — selector path (tap(&selector)) is the
canonical surface. This bypasses a11y resolve entirely. See
CLAUDE.md §9 #3.
Sourcepub async fn tap_by_id(&self, id: &str) -> Result<(), ExpectationFailure>
pub async fn tap_by_id(&self, id: &str) -> Result<(), ExpectationFailure>
POST /tap-by-id {id} passthru (v5.3 c4) — XCUIElement.tap() via
the XCTest gesture-recognizer chain. SwiftUI .sheet / .alert /
.confirmationDialog / .fullScreenCover dismiss buttons need this
path because the default host-HID-at-coord injects an IOKit-level
touch that doesn’t fire the modal’s SwiftUI binding closure.
Returns ElementNotFound when the runner reports ok=false.
Sourcepub async fn webview_eval(&self, js: &str) -> Result<Value, ExpectationFailure>
pub async fn webview_eval(&self, js: &str) -> Result<Value, ExpectationFailure>
v5.21 c1b — Eval JS via fixture-side WKWebView bridge (Option A
per a11y-i18n master plan §1 L5+). Direct HTTP POST to
127.0.0.1:28080/eval (iOS sim shares host loopback) — does NOT
use XCUITest runner. Returns parsed JS result as JSON Value;
surfaces bridge error / transport failure as DriverError.
Sourcepub async fn find_text_by_ocr(
&self,
text: &str,
locales: &[String],
recognition_level: &str,
) -> Result<Option<OcrFrame>, ExpectationFailure>
pub async fn find_text_by_ocr( &self, text: &str, locales: &[String], recognition_level: &str, ) -> Result<Option<OcrFrame>, ExpectationFailure>
POST /find-text-by-ocr passthru (v5.19 c1) — Apple Vision OCR
over current XCUIScreen screenshot. Returns the matching text
observation’s bounding box (UIKit normalized) or None. L5 sense
layer per a11y-i18n master plan §1.
Sourcepub async fn swipe_at_norm_coord(
&self,
from: (f64, f64),
to: (f64, f64),
) -> Result<(), ExpectationFailure>
pub async fn swipe_at_norm_coord( &self, from: (f64, f64), to: (f64, f64), ) -> Result<(), ExpectationFailure>
POST /swipe-at-norm-coord {from, to} passthru — escape hatch
from-to swipe gesture sibling to Self::tap_at_norm_coord.
from / to are normalized to viewport (0, 1). v5.2 c1 §9 #3
lift companion to tap_at_coord.
Sourcepub async fn foreground(
&self,
bundle_id: &str,
) -> Result<(), ExpectationFailure>
pub async fn foreground( &self, bundle_id: &str, ) -> Result<(), ExpectationFailure>
POST /foreground {bundleId} passthru.
Sourcepub async fn wait_for(
&self,
selector: &Selector,
timeout: Duration,
include: Option<IncludeScope>,
) -> Result<A11yNode, ExpectationFailure>
pub async fn wait_for( &self, selector: &Selector, timeout: Duration, include: Option<IncludeScope>, ) -> Result<A11yNode, ExpectationFailure>
Poll until selector resolves to a node, or timeout fires. Returns
the matched node (cloned). v0.3 C6 contract — 5s default budget,
250 ms poll interval. Mirrors TS waitFor 1:1.
Sourcepub async fn dispose(&self) -> Result<(), ExpectationFailure>
pub async fn dispose(&self) -> Result<(), ExpectationFailure>
Idempotent close hook (跟 TS R5.a dispose 同). Current Rust impl
has no sidecar / no cache to tear down; reserved for future
HostHidSidecar wrapper port if/when that path returns.
Trait Implementations§
Source§impl Driver for IosDriver
impl Driver for IosDriver
Source§fn set_target_bundle_id(&mut self, bundle: &str)
fn set_target_bundle_id(&mut self, bundle: &str)
v0.2.1 — iOS impl: mutate the wrapped HttpRunnerClient so every
subsequent request carries the App-Bundle-Id header. Runner
side rebinds XCUIApplication(bundleIdentifier:) per request.
Source§fn set_auto_activate(&mut self, activate: bool)
fn set_auto_activate(&mut self, activate: bool)
v0.2.1 — iOS impl: mutate the wrapped client to send
App-Activate: true on every request.
Source§fn as_ios_driver(&self) -> Option<&IosDriver>
fn as_ios_driver(&self) -> Option<&IosDriver>
IosDriver’s inherent
runner() for capsule recording (start_record / stop_record) +
describe() aggregation. Android impl returns None. Default
None so non-iOS impls don’t need to implement.Source§fn tree<'life0, 'async_trait>(
&'life0 self,
include: Option<IncludeScope>,
) -> Pin<Box<dyn Future<Output = Result<A11yNode, ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn tree<'life0, 'async_trait>(
&'life0 self,
include: Option<IncludeScope>,
) -> Pin<Box<dyn Future<Output = Result<A11yNode, ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
GET /tree).Source§fn find<'life0, 'life1, 'async_trait>(
&'life0 self,
selector: &'life1 Selector,
include: Option<IncludeScope>,
) -> Pin<Box<dyn Future<Output = Result<bool, ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn find<'life0, 'life1, 'async_trait>(
&'life0 self,
selector: &'life1 Selector,
include: Option<IncludeScope>,
) -> Pin<Box<dyn Future<Output = Result<bool, ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn find_one<'life0, 'life1, 'async_trait>(
&'life0 self,
selector: &'life1 Selector,
include: Option<IncludeScope>,
) -> Pin<Box<dyn Future<Output = Result<Option<A11yNode>, ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn find_one<'life0, 'life1, 'async_trait>(
&'life0 self,
selector: &'life1 Selector,
include: Option<IncludeScope>,
) -> Pin<Box<dyn Future<Output = Result<Option<A11yNode>, ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn find_all<'life0, 'life1, 'async_trait>(
&'life0 self,
selector: &'life1 Selector,
include: Option<IncludeScope>,
) -> Pin<Box<dyn Future<Output = Result<Vec<A11yNode>, ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn find_all<'life0, 'life1, 'async_trait>(
&'life0 self,
selector: &'life1 Selector,
include: Option<IncludeScope>,
) -> Pin<Box<dyn Future<Output = Result<Vec<A11yNode>, ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn find_norm_coord<'life0, 'life1, 'async_trait>(
&'life0 self,
selector: &'life1 Selector,
) -> Pin<Box<dyn Future<Output = Result<Option<(f64, f64)>, ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn find_norm_coord<'life0, 'life1, 'async_trait>(
&'life0 self,
selector: &'life1 Selector,
) -> Pin<Box<dyn Future<Output = Result<Option<(f64, f64)>, ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
(nx, ny).Source§fn find_text_by_ocr<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
text: &'life1 str,
locales: &'life2 [String],
recognition_level: &'life3 str,
) -> Pin<Box<dyn Future<Output = Result<Option<OcrFrame>, ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn find_text_by_ocr<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
text: &'life1 str,
locales: &'life2 [String],
recognition_level: &'life3 str,
) -> Pin<Box<dyn Future<Output = Result<Option<OcrFrame>, ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
recognition_level is "accurate" or "fast".Source§fn system_popups<'life0, 'async_trait>(
&'life0 self,
include: Option<IncludeScope>,
) -> Pin<Box<dyn Future<Output = Result<Vec<SystemPopup>, ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn system_popups<'life0, 'async_trait>(
&'life0 self,
include: Option<IncludeScope>,
) -> Pin<Box<dyn Future<Output = Result<Vec<SystemPopup>, ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn system_popup_action<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
popup_id: &'life1 str,
button_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<bool, ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn system_popup_action<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
popup_id: &'life1 str,
button_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<bool, ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Source§fn wait_for<'life0, 'life1, 'async_trait>(
&'life0 self,
selector: &'life1 Selector,
timeout: Duration,
include: Option<IncludeScope>,
) -> Pin<Box<dyn Future<Output = Result<A11yNode, ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn wait_for<'life0, 'life1, 'async_trait>(
&'life0 self,
selector: &'life1 Selector,
timeout: Duration,
include: Option<IncludeScope>,
) -> Pin<Box<dyn Future<Output = Result<A11yNode, ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn tap<'life0, 'life1, 'async_trait>(
&'life0 self,
selector: &'life1 Selector,
include: Option<IncludeScope>,
) -> Pin<Box<dyn Future<Output = Result<(), ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn tap<'life0, 'life1, 'async_trait>(
&'life0 self,
selector: &'life1 Selector,
include: Option<IncludeScope>,
) -> Pin<Box<dyn Future<Output = Result<(), ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn tap_with_mode<'life0, 'life1, 'async_trait>(
&'life0 self,
selector: &'life1 Selector,
mode: TapMode,
include: Option<IncludeScope>,
) -> Pin<Box<dyn Future<Output = Result<(), ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn tap_with_mode<'life0, 'life1, 'async_trait>(
&'life0 self,
selector: &'life1 Selector,
mode: TapMode,
include: Option<IncludeScope>,
) -> Pin<Box<dyn Future<Output = Result<(), ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn tap_at_norm_coord<'life0, 'async_trait>(
&'life0 self,
nx: f64,
ny: f64,
) -> Pin<Box<dyn Future<Output = Result<(), ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn tap_at_norm_coord<'life0, 'async_trait>(
&'life0 self,
nx: f64,
ny: f64,
) -> Pin<Box<dyn Future<Output = Result<(), ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn tap_by_id<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<(), ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn tap_by_id<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<(), ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
/tap-by-id route
(IOHID synthesize at element-frame center; v5.12 c1+).Source§fn double_tap<'life0, 'life1, 'async_trait>(
&'life0 self,
selector: &'life1 Selector,
include: Option<IncludeScope>,
) -> Pin<Box<dyn Future<Output = Result<(), ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn double_tap<'life0, 'life1, 'async_trait>(
&'life0 self,
selector: &'life1 Selector,
include: Option<IncludeScope>,
) -> Pin<Box<dyn Future<Output = Result<(), ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn long_press<'life0, 'life1, 'async_trait>(
&'life0 self,
selector: &'life1 Selector,
duration: Duration,
include: Option<IncludeScope>,
) -> Pin<Box<dyn Future<Output = Result<(), ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn long_press<'life0, 'life1, 'async_trait>(
&'life0 self,
selector: &'life1 Selector,
duration: Duration,
include: Option<IncludeScope>,
) -> Pin<Box<dyn Future<Output = Result<(), ExpectationFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
duration.