This commit is contained in:
@@ -281,12 +281,30 @@ async def interactions_service(
|
|||||||
# Fallback to coordinate-based interactions when no selector is given.
|
# Fallback to coordinate-based interactions when no selector is given.
|
||||||
elif x is not None and y is not None:
|
elif x is not None and y is not None:
|
||||||
if action == "click":
|
if action == "click":
|
||||||
await page.mouse.click(x, y)
|
# Use DOM elementFromPoint so React/SPA components receive real click events.
|
||||||
|
handle = await page.evaluate_handle(
|
||||||
|
"(cx, cy) => document.elementFromPoint(cx, cy)",
|
||||||
|
x,
|
||||||
|
y,
|
||||||
|
)
|
||||||
|
try:
|
||||||
|
await handle.click()
|
||||||
|
finally:
|
||||||
|
await handle.dispose()
|
||||||
|
|
||||||
elif action == "type":
|
elif action == "type":
|
||||||
if text is None:
|
if text is None:
|
||||||
raise ValueError("Type interaction must contain text")
|
raise ValueError("Type interaction must contain text")
|
||||||
await page.mouse.click(x, y)
|
# Focus the element at the given coordinates, then type.
|
||||||
|
handle = await page.evaluate_handle(
|
||||||
|
"(cx, cy) => document.elementFromPoint(cx, cy)",
|
||||||
|
x,
|
||||||
|
y,
|
||||||
|
)
|
||||||
|
try:
|
||||||
|
await handle.click()
|
||||||
|
finally:
|
||||||
|
await handle.dispose()
|
||||||
await page.keyboard.type(text)
|
await page.keyboard.type(text)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user