�
�h�
� � � d Z ddlmZ ddlZddlmZ ddee dee dee d ee d
ef
d�Zdded
ed
dfd�Z ddede
d
dfd�Z ddee dee ded
efd�Z
ddee dee d
efd�ZdS )u8
UI操作模块 - 提供Android UI自动化操作功能
� )�OptionalN� )�
get_device�text�description�
resourceId�xpath�returnc �� � t � � }|j }| r
|| �� � }n.|r
||�� � }n|r
||�� � }n|r ||� � }ndS |j r|� � � dS dS )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�1�1��� � ��&�J�/�/�/��� � ��(�5�/�/����u��~� ��
�
�����t��5� T�clearc �x � t � � }|r|� � � |� | � � dS )u�
在当前焦点输入框中输入文本
Args:
text: 要输入的文本
clear: 是否在输入前清除现有内容
N)r �
clear_text� send_keys)r r r s r �
input_textr , sA � � �\�\�F�� �������
���T�����r ��������?� direction�scalec � � t � � }|� � � }|d |d }}|dz }|dz }| dk r|}t |d|z
z � � } ni| dk r|}t |d|z z � � } nK| dk rt |d|z
z � � }|} n-| dk rt |d|z z � � }|} nt d� � �|� |||| � � d S )
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�T�
�L�L��'�5�%�0�0�0�0�0r �
�timeoutc �d � t � � }t j � � }t j � � |z
|k rt| r! || �� � j rt | �� � S |r! ||�� � j rt |�� � S t j d� � t j � � |z
|k �tdS )u�
等待元素出现并点击
Args:
text: 要等待的文本内容
description: 要等待的描述内容
timeout: 超时时间(秒)
Returns:
bool: 是否点击成功
r r
g �?F)r �timer r �sleep)r r r0 r �
start_times r �wait_and_click_elementr5 W s� � � �\�\�F�����J�
�)�+�+�
�
"�W�
,�
,�� :�F�F��%�%�%�,� :� �d�+�+�+�+�
� :�V�V��<�<�<�C� :� �[�9�9�9�9��
�3���� �)�+�+�
�
"�W�
,�
,� �5r c � � t � � }| r% |d�� � j � | �� � S |r% |d�� � j � |�� � S dS )u�
滚动到指定元素
Args:
text: 要查找的文本
description: 要查找的描述
Returns:
bool: 是否找到并滚动到元素
T)�
scrollabler r
F)r �scroll�to)r r r s r �scroll_to_elementr: q sr � � �\�\�F�� J��v��&�&�&�-�0�0�d�0�;�;�;� � J��v��&�&�&�-�0�0�[�0�I�I�I��5r )NNNN)T)r )NNr/ )NN)�__doc__�typingr r2 �androidr �str�boolr r �floatr. r% r5 r: � r r �<module>rB s� ��� � � � � � � � ���� � � � � � � �!%� $�� !� !�
�3�-�!��#��!� ��
�!� �C�=� !�
�!� !� !� !�F
�
�S�
��
��
�
�
�
�1� 1�C� 1�� 1�� 1� 1� 1� 1�@ �!%��� �
�3�-���#��� ��
� � � � �6 �!%�� �
�3�-���#���
�� � � � � r