Рубрики
Без рубрики

Начало работы с Python PyAutoGUI

Библиотека PyAutoGUI обеспечивает кросс-платформенную поддержку управления операциями мыши и клавиатуры с помощью кода для автоматизации задач.

Автор оригинала: Muhammad Junaid Khalid.

Вступление

В этом уроке мы узнаем, как использовать библиотеку pyautogui в Python 3. Библиотека PyAutoGUI обеспечивает кросс-платформенную поддержку управления операциями мыши и клавиатуры с помощью кода для автоматизации задач. Библиотека pyautogui также доступна для Python 2; однако мы будем использовать Python 3 на протяжении всего этого урока.

Такой инструмент имеет множество приложений, некоторые из которых включают в себя создание скриншотов, автоматизацию тестирования графического интерфейса (например, Selenium), автоматизацию задач, которые могут быть выполнены только с помощью графического интерфейса, и т. Д.

Прежде чем приступить к этому уроку, обратите внимание, что есть несколько предварительных условий. Вы должны иметь базовое представление о синтаксисе Python и/или иметь хотя бы начальный уровень программирования на каком-то другом языке. Кроме того, учебник довольно прост и удобен для начинающих.

Установка

Процесс установки для PyAutoGUI довольно прост для всех операционных систем. Однако есть несколько зависимостей для Mac и Linux, которые необходимо установить, прежде чем библиотека PyAutoGUI может быть установлена и использована в программах.

Окна

Для Windows PyAutoGUI не имеет зависимостей. Просто запустите следующую команду в командной строке, и установка будет выполнена.

$ pip install PyAutoGUI

Мак

Для Mac сначала необходимо последовательно установить модули pyobjc-core и pyobjc . Ниже приведены команды, которые необходимо последовательно выполнить в вашем терминале для успешной установки:

$ pip3 install pyobjc-core
$ pip3 install pyobjc
$ pip3 install pyautogui

Линукс

Для 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 было добавлено в вышеприведенный код, чтобы вы могли видеть выполнение функции; в противном случае функции будут выполняться за долю секунды, и вы не сможете увидеть, как курсор перемещается из одного места в другое на экране.

Другим обходным путем для этого было бы указать время для каждой операции move To() в качестве третьего параметра функции, например moveTo(x, y, time_in_seconds) .

Выполнение приведенного выше сценария может привести к следующей ошибке:

Примечание: Возможная Ошибка

Traceback (most recent call last):
  File "a.py", line 5, in 
    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-координата точки достижения
  • клики : количество кликов, которые вы хотели бы сделать, когда курсор достигнет этой точки на экране.
  • интервал : количество времени в секундах между каждым щелчком мыши, т. е. если вы делаете несколько щелчков мыши
  • кнопка : укажите, какую кнопку мыши вы хотели бы нажать, когда курсор достигнет этой точки на экране. Возможные значения: 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')

Приведенный выше код эквивалентен просто выполнению вызова page.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']
Функция пишущей машинки()

Функция typewriter() используется для ввода чего-либо в текстовое поле. Синтаксис этой функции выглядит следующим образом:

pag.typewrite(text, interval)

Здесь текст – это то, что вы хотите ввести в поле, а интервал – это время в секундах между каждым нажатием клавиши. Вот пример:

pag.typewrite('Junaid Khalid', 1)

При выполнении описанного выше скрипта в выбранное в данный момент поле будет введен текст “Джунаид Халид” с паузой в 1 секунду между каждым нажатием клавиши.

Еще один способ использования этой функции-передача списка клавиш, которые вы хотите нажать в определенной последовательности. Чтобы сделать это с помощью кода, см. пример ниже:

pag.typewrite(['j', 'u', 'n', 'a', 'i', 'd', 'e', 'backspace', 'enter'])

В приведенном выше примере будет введен текст junaid , после чего будет удален трейлинг e . Ввод в текстовое поле будет выполнен нажатием клавиши Enter .

Функция горячей клавиши()

Если вы до сих пор этого не заметили, то ключи, которые мы показали выше, не упоминают о комбинированных операциях, таких как Control + C для команды копирования. Если вы думаете, что можете сделать это, передав список ['ctrl', 'c'] функции typewriter () , то вы ошибаетесь. Функция typewriter() будет нажимать обе эти кнопки последовательно, не одновременно. И как вы, наверное, уже знаете, чтобы выполнить команду копирования, вам нужно нажать клавишу C , удерживая клавишу ctrl .

Для одновременного нажатия двух или более клавиш можно использовать функцию hotkey () , как показано здесь:

pag.hotkey('shift', 'enter')
pag.hotkey('ctrl', '2' ) # For the @ symbol
pag.hotkey('ctrl', 'c')  # For the copy command
Функция screenshot()

Если вы хотите сделать снимок экрана в любом случае, функция screenshot () – это то, что вы ищете. Давайте посмотрим, как мы можем реализовать это с помощью Пятогуй :

scree_shot = pag.screenshot() # to store a PIL object containing the image in a variable

Это сохранит объект PIL , содержащий изображение в переменной.

Однако если вы хотите сохранить снимок экрана непосредственно на своем компьютере, вы можете вызвать функцию screenshot следующим образом:

pag.screenshot('ss.png')

Это позволит сохранить снимок экрана в файле с указанным именем файла на вашем компьютере.

Функции confirm(), alert () и prompt()

Последний набор функций, которые мы рассмотрим в этом уроке, – это функции окна сообщений. Вот список функций окна сообщений, доступных в Пятогуй :

  1. Окно подтверждения: Отображает информацию и дает вам два варианта, т. е. OK и Отмена
  2. Окно оповещения: Отображает некоторую информацию и подтверждает, что вы ее прочитали. Он отображает одну кнопку, т. е. OK
  3. Окно запроса: Запрашивает некоторую информацию у пользователя, и после ввода пользователь должен нажать кнопку OK

Теперь, когда мы увидели типы, давайте посмотрим, как мы можем отображать эти кнопки на экране в той же последовательности, что и выше:

pag.confirm("Are you ready?")
pag.alert("The program has crashed!")
pag.prompt("Please enter your name: ")

В выходных данных вы увидите следующую последовательность окон сообщений.

Подтверждать:

Тревога:

Незамедлительный:

Вывод

В этом уроке мы узнали, как использовать библиотеку автоматизации PyAutoGUI в Python. Мы начали с обсуждения предварительных условий для этого учебника, процесса его установки для различных операционных систем, а затем узнали о некоторых его общих функциях. После этого мы изучили функции, характерные для движений мыши, управления мышью и управления клавиатурой.

После выполнения этого урока вы сможете использовать PyAutoGUI для автоматизации операций графического интерфейса для повторяющихся задач в вашем собственном приложении.