�
�h�
� �� � d Z ddlmZ ddlZddlmZ ddee dee dee d ee d
ef
d�Zddeded
dfd
�Z ddede
d
dfd�Z ddee dee ded
efd�Z
ddee dee d
efd�Zy)u8
UI操作模块 - 提供Android UI自动化操作功能
� )�OptionalN� )�
get_device�text�description�
resourceId�xpath�returnc �� � t � }|j }| r
|| �� }n$|r
||�� }n|r
||�� }n|r ||� }ny|j r|j � yy)u�
点击界面元素
Args:
text: 通过文本内容定位
description: 通过描述内容定位
resourceId: 通过资源ID定位
xpath: 通过xpath定位
Returns:
bool: 是否点击成功
�r �r )r FT)r r �exists�click)r r r r �device�selector�elements �7/Volumes/dz/code/uiautomator2-mcp/src/mcp_android/ui.py�
click_elementr s` � � �\�F��|�|�H���d�#�� ��[�1�� ��J�/�� ��5�/����~�~��
�
���� �clearc �^ � t � }|r|j � |j | � y)u�
在当前焦点输入框中输入文本
Args:
text: 要输入的文本
clear: 是否在输入前清除现有内容
N)r �
clear_text� send_keys)r r r s r �
input_textr , s( � � �\�F������
���T�r � direction�scalec �f � t � }|j � }|d |d }}|dz }|dz }| dk( r|}t |d|z
z � } nV| dk( r|}t |d|z z � } n=| dk( rt |d|z
z � }|} n$| dk( rt |d|z z � }|} nt d� �|j |||| � y )
u�
滑动屏幕
Args:
direction: 滑动方向,支持 'up', 'down', 'left', 'right'
scale: 滑动比例,默认0.9
r r � �up�down�left�rightz8Invalid direction. Must be one of: up, down, left, rightN)r �window_size�int�
ValueError�swipe)
r r r r# �width�height�start_x�start_y�end_x�end_ys
r �swipe_screenr- 8 s� � � �\�F��$�$�&�K���N�K��N�6�E��q�j�G���k�G��D�����G�q�5�y�)�*�� �f� ����G�q�5�y�)�*�� �f� ��G�q�5�y�)�*���� �g� ��G�q�5�y�)�*�����S�T�T�
�L�L��'�5�%�0r �timeoutc �X � t � }t j � }t j � |z
|k rr| r || �� j rt | �� S |r ||�� j rt |�� S t j d� t j � |z
|k r�ry)u�
等待元素出现并点击
Args:
text: 要等待的文本内容
description: 要等待的描述内容
timeout: 超时时间(秒)
Returns:
bool: 是否点击成功
r r
g �?F)r �timer r �sleep)r r r. r �
start_times r �wait_and_click_elementr3 W s� � � �\�F�����J�
�)�)�+�
�
"�W�
,��F��%�,�,� �d�+�+�
�V��<�C�C� �[�9�9��
�
�3�� �)�)�+�
�
"�W�
,� r c � � t � }| r# |d�� j j | �� S |r# |d�� j j |�� S y)u�
滚动到指定元素
Args:
text: 要查找的文本
description: 要查找的描述
Returns:
bool: 是否找到并滚动到元素
T)�
scrollabler r
F)r �scroll�to)r r r s r �scroll_to_elementr8 q sR � � �\�F����&�-�-�0�0�d�0�;�;� ���&�-�-�0�0�[�0�I�I�r )NNNN)T)g�������?)NN�
)NN)�__doc__�typingr r0 �androidr �str�boolr r �floatr- r$ r3 r8 � r r �<module>rA s ��� � � � �!%� $�� !�
�3�-�!��#��!� ��
�!� �C�=� !�
�!�F
�S�
��
��
�1�C� 1�� 1�� 1�@ �!%���
�3�-���#��� ��
� �6 �!%��
�3�-���#���
�r