94 lines
3.2 KiB
Python
94 lines
3.2 KiB
Python
# Copyright (c) Microsoft Corporation.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
from playwright._impl._connection import Channel
|
|
from playwright._impl._helper import MouseButton, locals_to_params
|
|
|
|
|
|
class Keyboard:
|
|
def __init__(self, channel: Channel) -> None:
|
|
self._channel = channel
|
|
self._loop = channel._connection._loop
|
|
self._dispatcher_fiber = channel._connection._dispatcher_fiber
|
|
|
|
async def down(self, key: str) -> None:
|
|
await self._channel.send("keyboardDown", locals_to_params(locals()))
|
|
|
|
async def up(self, key: str) -> None:
|
|
await self._channel.send("keyboardUp", locals_to_params(locals()))
|
|
|
|
async def insert_text(self, text: str) -> None:
|
|
await self._channel.send("keyboardInsertText", locals_to_params(locals()))
|
|
|
|
async def type(self, text: str, delay: float = None) -> None:
|
|
await self._channel.send("keyboardType", locals_to_params(locals()))
|
|
|
|
async def press(self, key: str, delay: float = None) -> None:
|
|
await self._channel.send("keyboardPress", locals_to_params(locals()))
|
|
|
|
|
|
class Mouse:
|
|
def __init__(self, channel: Channel) -> None:
|
|
self._channel = channel
|
|
self._loop = channel._connection._loop
|
|
self._dispatcher_fiber = channel._connection._dispatcher_fiber
|
|
|
|
async def move(self, x: float, y: float, steps: int = None) -> None:
|
|
await self._channel.send("mouseMove", locals_to_params(locals()))
|
|
|
|
async def down(
|
|
self,
|
|
button: MouseButton = None,
|
|
clickCount: int = None,
|
|
) -> None:
|
|
await self._channel.send("mouseDown", locals_to_params(locals()))
|
|
|
|
async def up(
|
|
self,
|
|
button: MouseButton = None,
|
|
clickCount: int = None,
|
|
) -> None:
|
|
await self._channel.send("mouseUp", locals_to_params(locals()))
|
|
|
|
async def click(
|
|
self,
|
|
x: float,
|
|
y: float,
|
|
delay: float = None,
|
|
button: MouseButton = None,
|
|
clickCount: int = None,
|
|
) -> None:
|
|
await self._channel.send("mouseClick", locals_to_params(locals()))
|
|
|
|
async def dblclick(
|
|
self,
|
|
x: float,
|
|
y: float,
|
|
delay: float = None,
|
|
button: MouseButton = None,
|
|
) -> None:
|
|
await self.click(x, y, delay=delay, button=button, clickCount=2)
|
|
|
|
async def wheel(self, deltaX: float, deltaY: float) -> None:
|
|
await self._channel.send("mouseWheel", locals_to_params(locals()))
|
|
|
|
|
|
class Touchscreen:
|
|
def __init__(self, channel: Channel) -> None:
|
|
self._channel = channel
|
|
self._loop = channel._connection._loop
|
|
self._dispatcher_fiber = channel._connection._dispatcher_fiber
|
|
|
|
async def tap(self, x: float, y: float) -> None:
|
|
await self._channel.send("touchscreenTap", locals_to_params(locals()))
|