From 5564be7a122eb271db90c172f276688f785fa7fe Mon Sep 17 00:00:00 2001 From: Mikhail <-> Date: Thu, 18 Aug 2022 13:48:14 +0300 Subject: [PATCH] Robot.Mouse is ready for linux! --- Sources/GuideSphinx/Robot/06_mouse.rst | 2 + Sources/GuideSphinx/Robot/07_screen.rst | 1 + Sources/pyOpenRPA/Robot/Mouse.py | 14 +- Utils/Jupyter-notebooks/Mouse.ipynb | 165 ++++++------------------ 4 files changed, 46 insertions(+), 136 deletions(-) diff --git a/Sources/GuideSphinx/Robot/06_mouse.rst b/Sources/GuideSphinx/Robot/06_mouse.rst index 2574f755..e2c4f8ff 100644 --- a/Sources/GuideSphinx/Robot/06_mouse.rst +++ b/Sources/GuideSphinx/Robot/06_mouse.rst @@ -12,6 +12,8 @@ Описание функций ************************************************** +Описание каждой функции начинается с обозначения L+,W+, что означает, что функция поддерживается в ОС Linux (L) и Windows (W) + .. automodule:: pyOpenRPA.Robot.Mouse :members: :autosummary: diff --git a/Sources/GuideSphinx/Robot/07_screen.rst b/Sources/GuideSphinx/Robot/07_screen.rst index 18607164..bf5031f9 100644 --- a/Sources/GuideSphinx/Robot/07_screen.rst +++ b/Sources/GuideSphinx/Robot/07_screen.rst @@ -119,6 +119,7 @@ LD|CD|RD Описание функций ************************************************** +Описание каждой функции начинается с обозначения L+,W+, что означает, что функция поддерживается в ОС Linux (L) и Windows (W) .. automodule:: pyOpenRPA.Robot.Screen :members: diff --git a/Sources/pyOpenRPA/Robot/Mouse.py b/Sources/pyOpenRPA/Robot/Mouse.py index 8641750b..07d3c17c 100644 --- a/Sources/pyOpenRPA/Robot/Mouse.py +++ b/Sources/pyOpenRPA/Robot/Mouse.py @@ -4,7 +4,7 @@ import time WAIT_AFTER_SEC_FLOAT = 0.4 # Настройка модуля Mouse: Время, которое ожидать после выполнения любой операции модуля Mouse. Настройка является единой для всех участов кода, использующих модуль Mouse. Если для некоторой функции требуется изменить данное время ожидания, то в отношении этой функции можно применить соответсвующий аргумент. def Click(inXInt:int=None, inYInt:int=None, inClickCountInt:int=1, inIntervalSecFloat:float=0.0, inButtonStr:str='left', inMoveDurationSecFloat:float=0.0, inWaitAfterSecFloat:float=WAIT_AFTER_SEC_FLOAT): - """Нажатие (вниз) кнопки мыши и затем немедленно выпуск (вверх) её. Допускается следующая параметризация. Если не указаны inXInt и inYInt - клик производится по месту нахождения указателя мыши. + """L+,W+: Нажатие (вниз) кнопки мыши и затем немедленно выпуск (вверх) её. Допускается следующая параметризация. Если не указаны inXInt и inYInt - клик производится по месту нахождения указателя мыши. !ВНИМАНИЕ! Отсчет координат inXInt, inYInt начинается с левого верхнего края рабочей области (экрана). @@ -34,7 +34,7 @@ def Click(inXInt:int=None, inYInt:int=None, inClickCountInt:int=1, inIntervalSec time.sleep(inWaitAfterSecFloat) def ClickDouble(inXInt:int=None, inYInt:int=None, inWaitAfterSecFloat:float=WAIT_AFTER_SEC_FLOAT): - """Двойное нажатие левой клавиши мыши. Данное действие аналогично вызову функции (см. ниже). + """L+,W+: Двойное нажатие левой клавиши мыши. Данное действие аналогично вызову функции (см. ниже). !ВНИМАНИЕ! Отсчет координат inXInt, inYInt начинается с левого верхнего края рабочей области (экрана). @@ -56,7 +56,7 @@ def ClickDouble(inXInt:int=None, inYInt:int=None, inWaitAfterSecFloat:float=WAIT time.sleep(inWaitAfterSecFloat) def Down(inXInt:int=None, inYInt:int=None, inButtonStr:str='left', inWaitAfterSecFloat:float=WAIT_AFTER_SEC_FLOAT): - """Переместить указатель по координатам inXInt, inYInt, после чего нажать (вниз) клавишу мыши и не отпускать до выполнения соответсвующей команды (см. Up). Если координаты inXInt, inYInt не переданы - нажатие происходит на тех координатах X/Y, на которых указатель мыши находится. + """L+,W+: Переместить указатель по координатам inXInt, inYInt, после чего нажать (вниз) клавишу мыши и не отпускать до выполнения соответсвующей команды (см. Up). Если координаты inXInt, inYInt не переданы - нажатие происходит на тех координатах X/Y, на которых указатель мыши находится. !ВНИМАНИЕ! Отсчет координат inXInt, inYInt начинается с левого верхнего края рабочей области (экрана). @@ -80,7 +80,7 @@ def Down(inXInt:int=None, inYInt:int=None, inButtonStr:str='left', inWaitAfterSe time.sleep(inWaitAfterSecFloat) def Up(inXInt:int=None, inYInt:int=None, inButtonStr:str='left', inWaitAfterSecFloat:float=WAIT_AFTER_SEC_FLOAT): - """Отпустить (вверх) клавишу мыши. Если координаты inXInt, inYInt не переданы - нажатие происходит на тех координатах X/Y, на которых указатель мыши находится. + """L+,W+: Отпустить (вверх) клавишу мыши. Если координаты inXInt, inYInt не переданы - нажатие происходит на тех координатах X/Y, на которых указатель мыши находится. !ВНИМАНИЕ! Отсчет координат inXInt, inYInt начинается с левого верхнего края рабочей области. @@ -104,7 +104,7 @@ def Up(inXInt:int=None, inYInt:int=None, inButtonStr:str='left', inWaitAfterSecF time.sleep(inWaitAfterSecFloat) def MoveTo(inXInt=None, inYInt=None, inMoveDurationSecFloat:float=0.0, inWaitAfterSecFloat:float=WAIT_AFTER_SEC_FLOAT): - """Переместить указатель мыши на позицию inXInt, inYInt за время inMoveDurationSecFloat. + """L+,W+: Переместить указатель мыши на позицию inXInt, inYInt за время inMoveDurationSecFloat. !ВНИМАНИЕ! Отсчет координат inXInt, inYInt начинается с левого верхнего края рабочей области (экрана). @@ -128,7 +128,7 @@ def MoveTo(inXInt=None, inYInt=None, inMoveDurationSecFloat:float=0.0, inWaitAft time.sleep(inWaitAfterSecFloat) def ScrollVertical(inScrollClickCountInt, inXInt=None, inYInt=None, inWaitAfterSecFloat:float=WAIT_AFTER_SEC_FLOAT): - """Переместить указатель мыши на позицию inXInt, inYInt и выполнить вертикальную прокрутку (скроллинг) колесом мыши на количество щелчков inScrollClickCountInt. + """L+,W+: Переместить указатель мыши на позицию inXInt, inYInt и выполнить вертикальную прокрутку (скроллинг) колесом мыши на количество щелчков inScrollClickCountInt. !ВНИМАНИЕ! Отсчет координат inXInt, inYInt начинается с левого верхнего края рабочей области (экрана). @@ -154,7 +154,7 @@ def ScrollVertical(inScrollClickCountInt, inXInt=None, inYInt=None, inWaitAfterS time.sleep(inWaitAfterSecFloat) def ScrollHorizontal(inScrollClickCountInt, inXInt=None, inYInt=None, inWaitAfterSecFloat:float=WAIT_AFTER_SEC_FLOAT): - """!ТОЛЬКО ДЛЯ LINUX! Переместить указатель мыши на позицию inXInt, inYInt и выполнить горизонтальную прокрутку (скроллинг) виртуальным колесом мыши на количество щелчков inScrollClickCountInt. + """L+,W-: Переместить указатель мыши на позицию inXInt, inYInt и выполнить горизонтальную прокрутку (скроллинг) виртуальным колесом мыши на количество щелчков inScrollClickCountInt. !ВНИМАНИЕ! Отсчет координат inXInt, inYInt начинается с левого верхнего края рабочей области (экрана). diff --git a/Utils/Jupyter-notebooks/Mouse.ipynb b/Utils/Jupyter-notebooks/Mouse.ipynb index 4780db12..f437cf23 100644 --- a/Utils/Jupyter-notebooks/Mouse.ipynb +++ b/Utils/Jupyter-notebooks/Mouse.ipynb @@ -2,147 +2,32 @@ "cells": [ { "cell_type": "code", - "execution_count": 16, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import time\n", + "import sys\n", + "import os\n", + "#sys.path.insert(0, os.path.abspath(\"..\\\\..\\\\Sources\")) # FOR WINDOWS\n", + "sys.path.insert(0, os.path.abspath(\"../../Sources\")) # FOR LINUX \n", "from pyOpenRPA.Robot import Mouse" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 7, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['FAILSAFE',\n", - " 'FAILSAFE_POINT',\n", - " 'FailSafeException',\n", - " 'KEYBOARD_KEYS',\n", - " 'KEY_NAMES',\n", - " 'MINIMUM_DURATION',\n", - " 'MINIMUM_SLEEP',\n", - " 'PAUSE',\n", - " 'Point',\n", - " 'Size',\n", - " 'Window',\n", - " '__builtins__',\n", - " '__cached__',\n", - " '__doc__',\n", - " '__file__',\n", - " '__loader__',\n", - " '__name__',\n", - " '__package__',\n", - " '__spec__',\n", - " 'absolute_import',\n", - " 'alert',\n", - " 'center',\n", - " 'click',\n", - " 'collections',\n", - " 'collectionsSequence',\n", - " 'confirm',\n", - " 'displayMousePosition',\n", - " 'division',\n", - " 'doubleClick',\n", - " 'drag',\n", - " 'dragRel',\n", - " 'dragTo',\n", - " 'easeInBack',\n", - " 'easeInBounce',\n", - " 'easeInCirc',\n", - " 'easeInCubic',\n", - " 'easeInElastic',\n", - " 'easeInExpo',\n", - " 'easeInOutBack',\n", - " 'easeInOutBounce',\n", - " 'easeInOutCirc',\n", - " 'easeInOutCubic',\n", - " 'easeInOutElastic',\n", - " 'easeInOutExpo',\n", - " 'easeInOutQuad',\n", - " 'easeInOutQuart',\n", - " 'easeInOutQuint',\n", - " 'easeInOutSine',\n", - " 'easeInQuad',\n", - " 'easeInQuart',\n", - " 'easeInQuint',\n", - " 'easeInSine',\n", - " 'easeOutBack',\n", - " 'easeOutBounce',\n", - " 'easeOutCirc',\n", - " 'easeOutCubic',\n", - " 'easeOutElastic',\n", - " 'easeOutExpo',\n", - " 'easeOutQuad',\n", - " 'easeOutQuart',\n", - " 'easeOutQuint',\n", - " 'easeOutSine',\n", - " 'getActiveWindow',\n", - " 'getAllTitles',\n", - " 'getAllWindows',\n", - " 'getPointOnLine',\n", - " 'getWindowsAt',\n", - " 'getWindowsWithTitle',\n", - " 'grab',\n", - " 'hotkey',\n", - " 'hscroll',\n", - " 'isShiftCharacter',\n", - " 'isValidKey',\n", - " 'keyDown',\n", - " 'keyUp',\n", - " 'linear',\n", - " 'locate',\n", - " 'locateAll',\n", - " 'locateAllOnScreen',\n", - " 'locateCenterOnScreen',\n", - " 'locateOnScreen',\n", - " 'middleClick',\n", - " 'mouseDown',\n", - " 'mouseUp',\n", - " 'move',\n", - " 'moveRel',\n", - " 'moveTo',\n", - " 'onScreen',\n", - " 'password',\n", - " 'pixel',\n", - " 'pixelMatchesColor',\n", - " 'platformModule',\n", - " 'position',\n", - " 'press',\n", - " 'print_function',\n", - " 'prompt',\n", - " 'pygetwindow',\n", - " 'pymsgbox',\n", - " 'pyscreeze',\n", - " 'pytweening',\n", - " 'rightClick',\n", - " 'screenshot',\n", - " 'scroll',\n", - " 'size',\n", - " 'sys',\n", - " 'time',\n", - " 'tripleClick',\n", - " 'typewrite',\n", - " 'useImageNotFoundException',\n", - " 'vscroll',\n", - " 'write']" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "dir(Mouse)" + " # Mouse: Взаимодействие с мышью\n", + " from pyOpenRPA.Robot import Mouse\n", + " Mouse.Click(10,15) #Выполнить нажатие левой клавиши мыши на экране по координатам: X(гор) 100px, Y(вер) 150px.\n" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -152,7 +37,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -160,6 +45,28 @@ "Mouse.vscroll(-100)" ] }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + " # Mouse: Взаимодействие с мышью\n", + " from pyOpenRPA.Robot import Mouse\n", + " Mouse.ClickDouble(100,150) #Выполнить двойное нажатие левой клавиши мыши на экране по координатам: X(гор) 100px, Y(вер) 150px.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + " # Mouse: Взаимодействие с мышью\n", + " from pyOpenRPA.Robot import Mouse\n", + " Mouse.Down() #Опустить левую клавишу мыши" + ] + }, { "cell_type": "code", "execution_count": null, @@ -170,7 +77,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -184,7 +91,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.2" + "version": "3.10.5" }, "varInspector": { "cols": {