feat(driver): add Driver.long_press on WDA and Android

This commit is contained in:
2026-07-15 18:57:53 +08:00
parent 7d79f677fe
commit ff91bd4f70
8 changed files with 59 additions and 0 deletions
+3
View File
@@ -51,6 +51,9 @@ class FakeDriver(Driver):
def tap(self, x: float, y: float) -> None:
self.calls.append(("tap", (x, y)))
def long_press(self, x: float, y: float, duration_ms: int = 1200) -> None:
self.calls.append(("long_press", (x, y, duration_ms)))
def swipe(
self,
start_x: float,
+16
View File
@@ -103,6 +103,7 @@ def test_connect_failure_raises_device_offline_and_clears_client() -> None:
("lock", {}),
("unlock", {}),
("disconnect", {}),
("long_press", {"x": 1, "y": 2}),
],
)
def test_operation_before_connect_raises_device_offline(
@@ -255,6 +256,21 @@ def test_swipe_near_zero_distance_uses_default_speed() -> None:
assert speed > 0
def test_long_press_uses_long_click_gesture() -> None:
driver = _connected_driver()
driver.long_press(30, 40, duration_ms=1500)
driver._client.execute_script.assert_called_once_with(
"mobile: longClickGesture", {"x": 30, "y": 40}
)
def test_long_press_wraps_exception_into_driver_error() -> None:
driver = _connected_driver()
driver._client.execute_script.side_effect = RuntimeError("boom")
with pytest.raises(DriverError):
driver.long_press(1, 2)
# --------------------------------------------------------------------------- #
# build_android_driver_factory
# --------------------------------------------------------------------------- #
+3
View File
@@ -33,6 +33,9 @@ class TreeFailingDriver(Driver):
def tap(self, x: float, y: float) -> None:
return None
def long_press(self, x: float, y: float, duration_ms: int = 1200) -> None:
return None
def swipe(
self,
start_x: float,