Вступление
В этом руководстве мы узнаем, как использовать библиотеку
pyautogui в Python 3.
Библиотека PyAutoGUI
обеспечивает кроссплатформенную поддержку для
управления операциями с мышью и клавиатурой с помощью кода, позволяющего
автоматизировать задачи. Библиотека pyautogui
также доступна для
Python 2; однако мы будем использовать Python 3 на протяжении всего
этого руководства.
Такой инструмент имеет множество приложений, некоторые из которых включают создание снимков экрана, автоматизацию тестирования графического интерфейса пользователя (например, Selenium ), автоматизацию задач, которые могут быть выполнены только с помощью графического интерфейса, и т. Д.
Прежде чем продолжить это руководство, обратите внимание, что есть несколько предварительных условий. Вы должны иметь базовое представление о синтаксисе Python и / или программировать на каком-либо другом языке, по крайней мере, для начинающих. В остальном учебник довольно прост и понятен новичкам.
Монтаж
Процесс установки PyAutoGUI
довольно прост для всех операционных
систем. Однако существует несколько зависимостей для Mac и Linux,
которые необходимо установить перед установкой и использованием
библиотеки PyAutoGUI
Окна
Для Windows PyAutoGUI
не имеет зависимостей. Просто запустите
следующую команду в командной строке, и установка будет завершена.
$ pip install PyAutoGUI
Mac
Для Mac сначала необходимо последовательно установить модули
pyobjc-core
и pyobjc
Ниже приведены команды, которые необходимо
последовательно запустить в терминале для успешной установки:
$ pip3 install pyobjc-core
$ pip3 install pyobjc
$ pip3 install pyautogui
Linux
Для Linux единственной зависимостью является python3-xlib
(для Python
3). Чтобы установить его, а затем pyautogui
, запустите в своем
терминале две указанные ниже команды:
$ pip3 install python3-xlib
$ pip3 install pyautogui
Основные примеры кода
В этом разделе мы собираемся охватить некоторые из наиболее часто
используемых функций из библиотеки PyAutoGUI
Общие функции
Функция position ()
Прежде чем мы сможем использовать PyAutoGUI
, нам нужно импортировать
их в нашу программу:
import pyautogui as pag
Эта position()
сообщает нам текущее положение мыши на экране:
pag.position()
Выход:
Point (x = 643, y = 329)
Функция onScreen ()
Функция onScreen()
сообщает нам, существует ли на экране точка с
координатами x и y:
print(pag.onScreen(500, 600))
print(pag.onScreen(0, 10000))
Выход:
True
False
Здесь мы видим, что первая точка существует на экране, но вторая точка выходит за пределы экрана.
Функция size ()
Функция size()
находит высоту и ширину (разрешение) экрана.
pag.size()
Выход:
Size (width = 1440, height = 900)
Ваш результат может отличаться и будет зависеть от размера вашего экрана.
Общие операции с мышью
В этом разделе мы собираемся охватить PyAutoGUI
для управления мышью,
которые включают как перемещение положения курсора, так и автоматическое
нажатие кнопок с помощью кода.
Функция moveTo ()
Синтаксис функции moveTo()
следующий:
pag.moveTo(x_coordinate, y_coordinate)
Значение x_coordinate
увеличивается слева направо на экране, а
значение y_coordinate
увеличивается сверху вниз. Значение как
x_coordinate
и y_coordinate
в верхнем левом углу экрана равно 0.
Взгляните на следующий сценарий:
pag.moveTo(0, 0)
pag.PAUSE = 2
pag.moveTo(100, 500) #
pag.PAUSE = 2
pag.moveTo(500, 500)
В приведенном выше коде основное внимание уделяется функции moveTo()
которая перемещает курсор мыши по экрану на основе координат, которые мы
предоставляем в качестве параметров. Первый параметр - это координата x,
а второй параметр - координата y. Важно отметить, что эти координаты
представляют собой абсолютное положение курсора.
Еще одна вещь, которая была введена в приведенный выше код, - это
свойство PAUSE
в основном он приостанавливает выполнение скрипта на
заданное время. Свойство PAUSE
было добавлено в приведенный выше код,
чтобы вы могли видеть выполнение функции; в противном случае функции
будут выполняться за доли секунды, и вы не сможете увидеть, как курсор
перемещается из одного места в другое на экране.
Другой способ решения этой проблемы - указать время для каждой
moveTo()
в качестве третьего параметра функции, например
moveTo(x, y, time_in_seconds)
.
Выполнение вышеуказанного сценария может привести к следующей ошибке:
Примечание: возможная ошибка
Traceback (most recent call last):
File "a.py", line 5, in <module>
pag.moveTo (100, 500)
File "/anaconda3/lib/python3.6/site-packages/pyautogui/__init__.py", line 811, in moveTo
_failSafeCheck()
File "/anaconda3/lib/python3.6/site-packages/pyautogui/__init__.py", line 1241, in _failSafeCheck
raise FailSafeException ('PyAutoGUI fail-safe triggered from mouse moving to a corner of the screen. To disable this fail-safe, set pyautogui.FAILSAFE to False. DISABLING FAIL-SAFE IS NOT RECOMMENDED.')
pyautogui.FailSafeException: PyAutoGUI fail-safe triggered from mouse moving to a corner of the screen. To disable this fail-safe, set pyautogui.FAILSAFE to False. DISABLING FAIL-SAFE IS NOT RECOMMENDED.
Если выполнение функции moveTo()
вызывает ошибку, аналогичную
показанной выше, это означает, что на вашем компьютере включена функция
защиты от сбоев. Чтобы отключить отказоустойчивость, добавьте в начало
кода следующую строку:
pag.FAILSAFE = False
Эта функция включена по умолчанию, поэтому вы можете легко остановить
выполнение вашей pyautogui
, вручную переместив мышь в верхний левый
угол экрана. Как только мышь окажется в этом месте, pyautogui
выдаст
исключение и завершит работу.
Функция moveRel ()
Координаты функции moveTo()
абсолютны. Однако, если вы хотите
переместить положение мыши относительно текущего положения мыши, вы
можете использовать moveRel()
.
Это означает, что точкой отсчета для этой функции при перемещении
курсора будет не верхняя левая точка на экране (0, 0), а текущая позиция
курсора мыши. Итак, если ваш курсор мыши в настоящее время находится в
точке (100, 100) на экране и вы вызываете moveRel()
с параметрами
(100, 100, 2)
новая позиция вашего курсора перемещения будет (200,
200) .
Вы можете использовать moveRel()
как показано ниже:
pag.moveRel(100, 100, 2)
Приведенный выше сценарий переместит курсор на 100 пунктов вправо и на 100 пунктов вниз за 2 секунды относительно текущей позиции курсора.
Функция click ()
Функция click()
используется для имитации операций щелчка мышью.
Синтаксис функции click()
следующий:
pag.click(x, y, clicks, interval, button)
Параметры поясняются следующим образом:
x
: координата x точки, которую нужно достичьy
: координата y точки, которую нужно достичьclicks
: количество кликов, которые вы хотели бы сделать, когда курсор достигнет этой точки на экране.interval
: количество времени в секундах между каждым щелчком мыши, например, если вы выполняете несколько щелчков мышьюbutton
: укажите, какую кнопку мыши вы хотите нажать, когда курсор переместится в эту точку на экране. Возможные значения:right
,left
иmiddle
.
Вот пример:
pag.click(100, 100, 5, 2, 'right')
Вы также можете выполнять определенные функции щелчка следующим образом:
pag.rightClick(x, y)
pag.doubleClick(x, y)
pag.tripleClick(x, y)
pag.middleClick(x, y)
Здесь x
и y
представляют x
и y
, как и в предыдущих функциях.
Вы также можете получить более детальный контроль над щелчками мыши,
указав, когда нажимать на нее, а когда отпускать. Это делается с помощью
mouseDown
и mouseUp
соответственно.
Вот небольшой пример:
pag.mouseDown(x=x, y=y, button='left')
pag.mouseUp(x=x, y=y, button='left')
Приведенный выше код эквивалентен pag.click(x, y)
.
Функция scroll ()
Последняя функция мыши, которую мы рассмотрим, - это scroll
. Как и
ожидалось, у него есть два варианта: прокрутка вверх и прокрутка вниз.
Синтаксис функции scroll()
следующий:
pag.scroll(amount_to_scroll, x=x_movement, y=y_movement)
Для прокрутки вверх укажите положительное значение для
amount_to_scroll
, а для прокрутки вниз укажите отрицательное
значение. Вот пример:
pag.scroll(100, 120, 120)
Хорошо, это было для функций мыши. К настоящему времени вы должны иметь возможность управлять кнопками мыши, а также перемещениями по коду. Теперь перейдем к функциям клавиатуры. Их много, но мы рассмотрим только наиболее часто используемые.
Общие операции с клавиатурой
Прежде чем мы перейдем к функциям, важно знать, какие клавиши можно
нажимать с помощью кода в pyautogui
, а также их точное соглашение об
именах. Для этого запустите следующий скрипт:
print(pag.KEYBOARD_KEYS)
Выход:
['\t', '\n', '\r', ' ', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', 'accept', 'add', 'alt', 'altleft', 'altright', 'apps', 'backspace', 'browserback', 'browserfavorites', 'browserforward', 'browserhome', 'browserrefresh', 'browsersearch', 'browserstop', 'capslock', 'clear', 'convert', 'ctrl', 'ctrlleft', 'ctrlright', 'decimal', 'del', 'delete', 'divide', 'down', 'end', 'enter', 'esc', 'escape', 'execute', 'f1', 'f10', 'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2', 'f20', 'f21', 'f22', 'f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'final', 'fn', 'hanguel', 'hangul', 'hanja', 'help', 'home', 'insert', 'junja', 'kana', 'kanji', 'launchapp1', 'launchapp2', 'launchmail', 'launchmediaselect', 'left', 'modechange', 'multiply', 'nexttrack', 'nonconvert', 'num0', 'num1', 'num2', 'num3', 'num4', 'num5', 'num6', 'num7', 'num8', 'num9', 'numlock', 'pagedown', 'pageup', 'pause', 'pgdn', 'pgup', 'playpause', 'prevtrack', 'print', 'printscreen', 'prntscrn', 'prtsc', 'prtscr', 'return', 'right', 'scrolllock', 'select', 'separator', 'shift', 'shiftleft', 'shiftright', 'sleep', 'space', 'stop', 'subtract', 'tab', 'up', 'volumedown', 'volumemute', 'volumeup', 'win', 'winleft', 'winright', 'yen', 'command', 'option', 'optionleft', 'optionright']
Функция typewrite ()
Функция typewrite()
используется для ввода чего-либо в текстовое поле.
Синтаксис функции следующий:
pag.typewrite(text, interval)
Здесь text
- это то, что вы хотите ввести в поле, а interval
- это
время в секундах между каждым нажатием клавиши. Вот пример:
pag.typewrite('Junaid Khalid', 1)
Выполнение приведенного выше сценария приведет к вводу текста «Джунаид Халид» в поле, которое в настоящее время выбрано с паузой в 1 секунду между каждым нажатием клавиши.
Другой способ использования этой функции - передача списка клавиш, которые вы хотите нажимать последовательно. Чтобы сделать это с помощью кода, см. Пример ниже:
pag.typewrite(['j', 'u', 'n', 'a', 'i', 'd', 'e', 'backspace', 'enter'])
В приведенном выше примере junaide
с удалением завершающего e
. Ввод
в текстовое поле будет отправлен нажатием клавиши Enter
.
Функция hotkey ()
Если вы до сих пор этого не заметили, ключи, которые мы показали выше,
не упоминаются для комбинированных операций, таких как Control + C
для
команды копирования. Если вы думаете, что можете сделать это, передав
список ['ctrl', 'c']
функции typewrite()
, вы ошибаетесь. Функция
typewrite()
будет нажимать обе эти кнопки последовательно, а не
одновременно. И, как вы, наверное, уже знаете, чтобы выполнить команду
копирования, вам нужно нажать клавишу C
, удерживая клавишу ctrl
Чтобы нажать две или более клавиш одновременно, вы можете использовать
hotkey()
, как показано здесь:
pag.hotkey('shift', 'enter')
pag.hotkey('ctrl', '2' ) # For the @ symbol
pag.hotkey('ctrl', 'c') # For the copy command
Функция screenshot ()
Если вы хотите сделать снимок экрана в любой момент, screenshot()
-
это именно та функция, которую вы ищете. Давайте посмотрим, как мы можем
реализовать это с помощью PyAutoGUI
:
scree_shot = pag.screenshot() # to store a PIL object containing the image in a variable
Это сохранит объект PIL, содержащий изображение, в переменной.
Однако, если вы хотите сохранить снимок экрана непосредственно на свой
компьютер, вы можете screenshot
следующим образом:
pag.screenshot('ss.png')
Это сохранит снимок экрана в файле с указанным именем файла на вашем компьютере.
Функции confirm (), alert () и prompt ()
Последний набор функций, который мы рассмотрим в этом руководстве, - это
функции окна сообщения. Вот список функций окна сообщений, доступных в
PyAutoGUI
:
- Окно подтверждения: отображает информацию и дает вам два варианта:
OK
иCancel
- Окно оповещения: отображает некоторую информацию и подтверждает, что
вы ее прочитали. Он отображает одну кнопку, т.е.
OK
- Поле подсказки: запрашивает некоторую информацию от пользователя, и
при входе пользователь должен нажать кнопку
OK
Теперь, когда мы увидели типы, давайте посмотрим, как мы можем отображать эти кнопки на экране в той же последовательности, что и выше:
pag.confirm("Are you ready?")
pag.alert("The program has crashed!")
pag.prompt("Please enter your name: ")
На выходе вы увидите следующую последовательность окон сообщений.
Подтверждать:
{.ezlazyload}
Тревога:
{.ezlazyload}
Подсказка:
{.ezlazyload}
Заключение
В этом руководстве мы узнали, как использовать PyAutoGUI
в Python. Мы
начали с обсуждения предварительных условий для этого руководства,
процесса его установки для различных операционных систем, а затем узнали
о некоторых его общих функциях. После этого мы изучили функции,
специфичные для движений мыши, управления мышью и управления с
клавиатуры.
PyAutoGUI
этого руководства вы сможете использовать PyAutoGUI для
автоматизации операций с графическим интерфейсом пользователя для
повторяющихся задач в вашем собственном приложении.