Pyautogui что это — спросил я недавно Google, и не получил вразумительного ответа 🙁 Пора узнать: Pyautogui что это с примерами на русском 😉
Собственно — полная документация по библиотеке доступна на сайте разработчика 🙂 Но там на английском + куча лишнего текста (upd: решил сделать перевод технической документации на русский язык, вдруг вам пригодится? Читаем по ссылке 🙂 ). Потому и возникла мысль написать краткую шпаргалку для себя, и тех, кому это будет нужным.
Начнем с простого: Pyautogui — что это? Это библиотека, которая позволяет эмулировать действия пользователя как с клавиатурой (нажатия клавиш, ввод текста, горячие клавиши), так и с мышкой (правая/левая кнопка, нажатие, перенос). Работает это диво везде, где работает Python — а значит код, написанный в одном месте, будет работать в другом.
Давайте разберемся на практике:
Как запустить приложение с помощью Pyautogui:
import pyautogui
pyautogui.hotkey(‘Win’)
pyautogui.typewrite(‘Chrome’)
pyautogui.PAUSE = 5
pyautogui.keyDown(‘Enter’)
Как видно из кода:
1. Подключаем библиотеку
2. Инициализируем нажатие клавиши «Win»
3. Вводим в строку поиска Windows текст «Chrome»
4. Создаем паузу в 5 секунд (мало ли, вдруг компьютер будет долго думать?)
5. Инициализируем нажатие клавиши «Enter»
6. Радуемся
Как двигать мышкой и делать нажатие кнопки:
import pyautogui #Подключили библиотеку
pyautogui.moveTo(25, 1055) #Передвинули мышку в левый нижний угол (в район кнопки Start)
pyautogui.click() #Сэмулировали нажатие левой кнопки
Собственно, можно сделать эмулятор всех действий человека, и это весьма интересно 🙂 Например ниже — рабочий код, который накручивает виртуальную валюту на бирже Instagram-лайков:
import pyautogui
pyautogui.hotkey('Win')
pyautogui.PAUSE = 5
pyautogui.typewrite('Opera')
pyautogui.keyDown('Enter')
pyautogui.PAUSE = 5
pyautogui.moveTo(400, 60)
pyautogui.typewrite('1gram.ru')
pyautogui.PAUSE = 5
pyautogui.keyDown('Enter')
pyautogui.moveTo(750, 550)
pyautogui.click(button='left')
pyautogui.PAUSE = 5
pyautogui.moveTo(800, 600)
pyautogui.click(button='left')
pyautogui.typewrite('login')
pyautogui.PAUSE = 5
pyautogui.moveTo(800, 630)
pyautogui.click(button='left')
pyautogui.typewrite('password')
pyautogui.PAUSE = 5
#Авторизация закончена, начинаем кликать лайки
pyautogui.moveTo(800, 700)
pyautogui.click(button='left') #Выбрали только лайки
pyautogui.PAUSE = 5
pyautogui.moveTo(590, 475)
#Пускаем в цикл?
pyautogui.click(button='left') # Выбрали - выполнить задание
pyautogui.PAUSE = 5
#Нужно промотать вниз до упора
pyautogui.moveTo(1625, 327)
pyautogui.PAUSE = 5
pyautogui.dragTo(1625, 950, 2, button='left')
pyautogui.PAUSE = 5
pyautogui.moveTo(1132, 537)
pyautogui.click(button='left')
pyautogui.PAUSE = 5
pyautogui.moveTo(1612, 39)
pyautogui.PAUSE = 5
pyautogui.click(button='left')
while True:
pyautogui.moveTo(716, 638)
pyautogui.PAUSE = 5
pyautogui.click(button='left')
pyautogui.moveTo(1625, 327)
pyautogui.PAUSE = 5
pyautogui.dragTo(1625, 950, 2, button='left')
pyautogui.PAUSE = 5
pyautogui.moveTo(1100, 531)
pyautogui.click(button='left')
pyautogui.PAUSE = 5
pyautogui.moveTo(1612, 39)
pyautogui.PAUSE = 5
pyautogui.click(button='left')
Понятно, код можно и нужно оптимизировать, но как для кода, сделанного за 5 минут «на коленке» — весьма недурно 😉
Или — пример, который и привел меня к этой библиотеке: получение скриншота — этот вопрос я рассматривал в одной из предыдущих записей.
Спасибо за внимание 🙂 В случае возникновения вопросов — пишите на почту или в Telegram.
UPD: один из читателей блога написал письмо с тем, что представленный выше код создания скрина с помощью pyautogui не работает — вылетает ошибка (смотрим скрин ниже (скрин прислан читателем)):
При том, что сам код я проверил у себя:
import pyautogui # Подключаем библиотеку
screenshot = pyautogui.screenshot()
screenshot.save('screen.png')
у читателя код категорически не запускался. До корня проблемы добраться так и не смогли, однако — после того, как читатель переустановил библиотеку pyautogui — все заработало. Судя по всему имел место сбой в процессе установки библиотеки 🙁
ввод текста pyautogui
Support the Blog!
Running a blog takes a lot of effort, time, and passion. Your donations help improve the content, inspire new ideas, and keep the project going.
If you’ve enjoyed the blog’s materials, any support would mean the world to me. Thank you for being here! ❤️