перейдите к разделу « Начало работы », если не хотите знать об используемом модуле и его установке.
Здравствуйте, читатели, надеюсь, у вас все хорошо. Сегодня вы узнаете, Как можно автоматизировать компьютерную мышь и клавиатуру с помощью Python. Вот почему я люблю Python, в нем есть все, что мне нужно. Войдя в мир Python, я решил многие проблемы и вопросы, которые у меня были на уме. Во-первых, когда я пытаюсь чему-то научиться, я просто гулю это и бум, я получаю несколько статей или полезных советов, чтобы найти свой собственный способ сделать это. В этой статье мы будем использовать модуль Python PyAutoGUI, который автоматизирует нашу мышь и клавиатуру . Я видел много статей, связанных с PyAutoGUI, но здесь я постараюсь дать вам несколько уникальных идей использования этого модуля.
Цель PyAutoGUI - предоставить кроссплатформенный модуль Python для автоматизации графического интерфейса для людей. API спроектирован так, чтобы быть максимально простым с разумными значениями по умолчанию. Я коснусь только основ этого модуля, остальные атрибуты и функции вы можете найти в документации модуля PyAutoGUI в PyPI.
Установка:
Windows:
В Windows гораздо проще установить и использовать PyAutoGUI. В Windows вы можете установить его из PyPI с помощью pip, если у вас установлен pip.
pip install pyautogui
Os X:
В Os X вам необходимо установить несколько дополнительных модулей, чтобы иметь возможность запускать PyAutoGui.
pip3 install pyobjc-core pip3 install pyobjc pip3 install pyautogui
Linux:
В Linux вам необходимо установить несколько пакетов.
pip3 install python3-xlib
sudo apt-get install scrot
sudo apt-get install python3-tk
sudo apt-get install python3-dev
pip3 install pyautogui
Начиная:
Если вы хотите создать невероятный автоматизированный инструмент, вы можете интегрировать этот модуль в другие замечательные модули, такие как Selenium, OpenCV и т. Д.
Используя PyAutoGUI, вы можете делать следующее.
Сбой-сейфы:
- "Безопасность"
Особенности мыши:
- Движение мыши (относительное, фиксированное)
- Перетаскивание (относительное, фиксированное)
- Щелчки (вправо, посередине, влево, вверх, вниз, двойные и тройные)
- Прокрутка (вверх, вниз, влево и вправо)
Особенности клавиатуры:
- "Письмо"
- Нажатие клавиш (f1 - f2, все остальные клавиши)
- Нажмите ярлык (например, CTR + C)
Функции окна сообщения:
Функции снимков экрана (поиск изображений):
"Другие особенности:"
- "Размер экрана"
- Положение курсора
Отказоустойчивые сейфы:
Пауза:
Пауза - это опция в PyAutoGUI, которая устанавливает паузу между каждым вызовом модуля. Например: у нас есть две функции: одна запись и другие щелчки, вторая функция выполняется по истечении заданного времени при установке этой опции.
pyautogui.PAUSE = dur # 2.5
Отказоустойчивый:
Этот параметр больше похож на отмену программы с помощью CTRL + C. Если для этого параметра установлено значение Истина, программа прерывается и генерируется pyautogui.FailSafeException
Exception, перемещая мышь в верхний левый угол экрана.
pyautogui.FAILSAFE = True
Особенности мыши:
Движение мыши:
Вы можете переместить мышь в координаты x, y экрана, используя следующую функцию класса pyautogui
pyautogui.moveTo(x, y, duration=num_seconds)
где x и y - координаты XY на экране. X увеличивается при движении вправо, Y увеличивается при движении вниз. продолжительность - это время в секундах, которое замедляет движение мыши в зависимости от времени.
Существует еще одна функция, которая перемещает мышь относительно текущего положения мыши, что просто означает, что она будет перемещать мышь (100,100) влево и вправо от того места, где находится текущее положение мыши.
pyautogui.moveRel(xOffset, yOffset, duration=num_seconds) # you can use pyautogui.move(xOffset, yOffset) as well
Здесь xOffset и yOffset - это приращения к текущему положению мыши x и y соответственно.
Перетаскивание:
Перетаскивание - еще одна удивительная и важная функция мыши. Перетаскивание означает просто перемещать мышь, удерживая кнопку щелчка. Вы можете перетаскивать с помощью следующей функции.
pyautogui.dragTo(x, y, duration=num_seconds) pyautogui.dragRel(xOffset, yOffset, duration=num_seconds) # you can use pyautogui.drag(xOffset, yOffset) as well
Объяснение этих функций такое же, как и движение мыши.
Клики:
Как вы знаете, есть разные типы щелчков мышью, которые мы можем выполнять вручную. PyAutoGUI позволяет нам использовать многие из этих функций. Некоторые из них:
- Одиночный, двойной и тройной щелчок
- Кнопка мыши вверх и вниз Событие
- Левый, правый и средний щелчок
Синтаксис:
pyautogui.click(x=None, y=None, clicks=1, interval=0.0, button='left', duration=0.0)
Вы можете использовать функцию click()
следующим образом:
pyautogui.click() # click the mouse at current position pyautogui.click(20,10) # move to 20, 10, then click the left mouse button # you can pass a Tuple as well (20,10) pyautogui.click(button='right') # right-click the mouse pyautogui.click(button='middle') # middle-click the mouse pyautogui.click(button='left') # left-click the mouse # You can pass it with the above as well pyautogui.click(clicks=2) # double-click the left mouse button pyautogui.click(clicks=2, interval=0.25) # double-click the left mouse button, but with a quarter second pause in between clicks pyautogui.click(button='right', clicks=3, interval=0.25) ## triple-click the right mouse button with a quarter second pause in between clicks
есть также отдельные функции для выполнения той же работы.
pyautogui.doubleClick()# perform a left-button double click pyautogui.rightClick()# perform a right-button click pyautogui.middleClick()# perform a middle-button click pyautogui.trippleClick()# perform a left-button triple click Have more Optional Attributes for each Functions such as x and y coordinates, duration, and interval.
Щелчки и перетаскивание мышью состоят как из нажатия кнопки мыши, так и ее возврата. Если вы хотите выполнить эти действия по отдельности, вызовите функции mouseDown()
и mouseUp()
. У них одинаковые x
, y
и button
.
pyautogui.mouseDown(); pyautogui.mouseUp() # does the same thing as a left-button mouse click pyautogui.mouseDown(button='right') # press the right button down pyautogui.mouseUp(button='right', x=100, y=200) # move the mouse to 100, 200, then release the right button up.
Прокрутка:
Колесо прокрутки мыши можно смоделировать, вызвав функцию scroll()
и передав целое число «щелчков» для прокрутки. Количество прокрутки за «клик» зависит от платформы.
Синтаксис:
pyautogui.scroll(clicks, x=None, y=None)
Вы можете использовать функцию scroll()
следующим образом:
pyautogui.scroll(10) # scroll up 10 "clicks" pyautogui.scroll(-10) # scroll down 10 "clicks" pyautogui.scroll(10, x=100, y=100) # move mouse cursor to 100, 200, then scroll up 10 "clicks"
Вы можете использовать hscroll()
для прокрутки влево и вправо в Linux и на платформе OSX.
Особенности клавиатуры:
Письмо:
Вы можете написать алфавит, слово или предложение с помощью функции в классе pyautogui. Он также предлагает задержку между вводом каждого слова, что делает его более фантастическим.
pyautogui.typewrite('Hello world!') # prints out "Hello world!" instantly
Если вы хотите оживить это предложение и хотите, чтобы компьютер записал его через небольшой промежуток времени, вы можете использовать атрибут интервала.
pyautogui.typewrite('Hello world!', interval=0.25) # prints out "Hello world!" with a quarter second delay after each character
Нажатие клавиш:
Чтобы нажать эти клавиши, вызовите функцию press()
и передайте функции определенные значения в строке.
Чтобы нажать более одной клавиши, передать кортеж или список клавиш, также требуется другой необязательный атрибут presses=1
, который ограничивает количество нажатий клавиши (ей).
Также есть еще один атрибут interval=0.0
, который представляет собой интервал между каждым нажатием клавиши.
Ключи для этой функции определены и могут быть получены с помощью следующей опции pyautogui.KEYBOARD_KEYS
. Он напечатает список определенных ключей, которые он поддерживает. Например: enter
, up
, down
, esc
, f1
. См. KEYBOARD_KEYS.
pyautogui.press('enter') # press the Enter key pyautogui.press('f1') # press the F1 key pyautogui.press('left') # press the left arrow key
press()
- это просто оболочка для функцийkeyUp()
и keyDown()
, которые имитируют нажатие клавиши с последующим ее отпусканием.
pyautogui.keyDown('shift') # hold down the shift key pyautogui.keyUp('shift') # release the shift key
Нажатие ярлыков:
Чтобы было удобно нажимать горячие клавиши или сочетания клавиш, hotkey()
можно передать несколько цепочек клавиш, которые будут нажиматься по порядку, а затем отпускаться в обратном порядке.
pyautogui.hotkey('ctrl', 'shift', 'esc') # press CTRL + SHIFT + ESC at the same time
Приведенный выше код эквивалентен
pyautogui.keyDown('ctrl') # Hold CTRL button pyautogui.keyDown('shift') # Hold SHIFT button pyautogui.keyDown('esc') # Hold ESC button pyautogui.keyUp('esc') # Release ESC button pyautogui.keyUp('shift') # Release SHIFT button pyautogui.keyUp('ctrl') # Release CTRL button
Функции окна сообщений:
PyAutoGUI также отображает окна сообщений в стиле JavaScript. Предусмотрены четыре функции окна сообщений:
Окно предупреждения:
Отображает простое окно сообщения с текстом и единственной кнопкой ОК. Возвращает текст нажатой кнопки.
pyautogui.alert(text='', title='', button='OK')
Окно подтверждения:
Отображает окно сообщения с кнопками ОК и Отмена. Количество и текст кнопок можно настроить. Возвращает текст нажатой кнопки.
pyautogui.confirm(text='', title='', buttons=['OK', 'Cancel'])
Окно подсказки:
Отображает окно сообщения с вводом текста и кнопками OK и Отмена. Возвращает введенный текст или «Нет», если была нажата «Отмена».
pyautogui.prompt(text='', title='' , default='')
Окно пароля:
Отображает окно сообщения с вводом текста и кнопками OK и Отмена. Набранные символы отображаются как *
. Возвращает введенный текст или «Нет», если была нажата «Отмена».
password(text='', title='', default='', mask='*')
Функции снимков экрана (поиск изображений):
PyAutoGUI может делать снимки экрана, сохранять их в файлы и находить изображения на экране. Это полезно, если у вас есть небольшое изображение, скажем, кнопки, которую нужно нажать, и вы хотите разместить ее на экране.
Сделайте снимок экрана:
Вызов screenshot()
вернет объект Image. Передача строки имени файла сохранит снимок экрана в файл, а также вернет его как объект Image.
im1 = pyautogui.screenshot() im2 = pyautogui.screenshot('my_screenshot.png')
Существует также необязательный аргумент ключевого слова region
, если вы не хотите делать снимок всего экрана. Вы можете передать кортеж из четырех целых чисел слева, сверху, ширины и высоты области для захвата:
im = pyautogui.screenshot(region=(0,0, 300, 400))
Найдите изображение на экране:
Вы можете визуально найти что-либо на экране, если у вас есть файл с изображением. Например, предположим, что приложение калькулятора работало на вашем компьютере и выглядело так:
и у вас есть изображение кнопки, например изображение кнопки 7:
вы можете вызвать функцию locateOnScreen('7key.png')
, чтобы получить координаты экрана. Возвращаемое значение - 4-целочисленный кортеж: (слева, сверху, ширина, высота). Однако, если вам просто нужны координаты x и y изображения на экране, вы можете вызвать locateCenterOnScreen()
, который вернет только x и y координаты. Если изображения на экране не найти, оно поднимется ImageNotFoundException
. Если вы хотите щелкнуть это изображение или объект, просто передайте координаты x и y из значений, возвращаемых предыдущими функциями, в click()
функцию. Чтобы узнать больше о поиске объектов на экране, перейдите по этой ссылке.
Другие особенности:
Размер экрана:
Чтобы получить размер экрана, PyAutoGUI имеет функцию size()
, которая возвращает кортеж целых чисел: (ширина, высота) для размера основного монитора.
pyautogui.size() # output: Size(width=1366, height=768)
Положение курсора:
Чтобы получить текущую позицию курсора, PyAutoGUI имеет функцию position()
, которая возвращает кортеж целых чисел: (x, y) для текущей позиции курсора мыши.
pyautogui.position() # outpu: Point(x=487, y=664)
Кредиты:
- Изображения взяты из Google Картинок.
- Спасибо Al Sweigart за отличный модуль.
📝 Прочтите этот рассказ позже в Журнале.
👩💻 Просыпайтесь каждое воскресное утро и слышите самые интересные истории недели в области технологий, ожидающие в вашем почтовом ящике. Прочтите информационный бюллетень« Примечательные в технологиях ».