Pyautogui что это

Pyautogui что это с примерами на русском ;)

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. Радуемся

Как двигать мышкой и делать нажатие кнопки:

  1. import pyautogui #Подключили библиотеку
  2.  
  3. pyautogui.moveTo(25, 1055) #Передвинули мышку в левый нижний угол (в район кнопки Start)
  4. pyautogui.click() #Сэмулировали нажатие левой кнопки

Собственно, можно сделать эмулятор всех действий человека, и это весьма интересно 🙂 Например ниже — рабочий код, который накручивает виртуальную валюту на бирже Instagram-лайков:

  1. import pyautogui
  2.  
  3. pyautogui.hotkey('Win')
  4. pyautogui.PAUSE = 5
  5. pyautogui.typewrite('Opera')
  6. pyautogui.keyDown('Enter')
  7. pyautogui.PAUSE = 5
  8. pyautogui.moveTo(400, 60)
  9. pyautogui.typewrite('1gram.ru')
  10. pyautogui.PAUSE = 5
  11. pyautogui.keyDown('Enter')
  12. pyautogui.moveTo(750, 550)
  13. pyautogui.click(button='left')
  14. pyautogui.PAUSE = 5
  15. pyautogui.moveTo(800, 600)
  16. pyautogui.click(button='left')
  17. pyautogui.typewrite('login')
  18. pyautogui.PAUSE = 5
  19. pyautogui.moveTo(800, 630)
  20. pyautogui.click(button='left')
  21. pyautogui.typewrite('password')
  22. pyautogui.PAUSE = 5
  23.  
  24. #Авторизация закончена, начинаем кликать лайки
  25. pyautogui.moveTo(800, 700)
  26. pyautogui.click(button='left') #Выбрали только лайки
  27. pyautogui.PAUSE = 5
  28. pyautogui.moveTo(590, 475)
  29.  
  30. #Пускаем в цикл?
  31. pyautogui.click(button='left')  # Выбрали - выполнить задание
  32. pyautogui.PAUSE = 5
  33.  
  34. #Нужно промотать вниз до упора
  35. pyautogui.moveTo(1625, 327)
  36. pyautogui.PAUSE = 5
  37. pyautogui.dragTo(1625, 950, 2, button='left')
  38. pyautogui.PAUSE = 5
  39. pyautogui.moveTo(1132, 537)
  40. pyautogui.click(button='left')
  41. pyautogui.PAUSE = 5
  42. pyautogui.moveTo(1612, 39)
  43. pyautogui.PAUSE = 5
  44. pyautogui.click(button='left')
  45. while True:
  46.     pyautogui.moveTo(716, 638)
  47.     pyautogui.PAUSE = 5
  48.     pyautogui.click(button='left')
  49.  
  50.     pyautogui.moveTo(1625, 327)
  51.     pyautogui.PAUSE = 5
  52.     pyautogui.dragTo(1625, 950, 2, button='left')
  53.     pyautogui.PAUSE = 5
  54.     pyautogui.moveTo(1100, 531)
  55.     pyautogui.click(button='left')
  56.     pyautogui.PAUSE = 5
  57.     pyautogui.moveTo(1612, 39)
  58.     pyautogui.PAUSE = 5
  59.     pyautogui.click(button='left')

Понятно, код можно и нужно оптимизировать, но как для кода, сделанного за 5 минут «на коленке» — весьма недурно 😉

Или — пример, который и привел меня к этой библиотеке: получение скриншота — этот вопрос я рассматривал в одной из предыдущих записей.

Спасибо за внимание 🙂 В случае возникновения вопросов — пишите на почту или в Telegram.

UPD: один из читателей блога написал письмо с тем, что представленный выше код создания скрина с помощью pyautogui не работает — вылетает ошибка (смотрим скрин ниже (скрин прислан читателем)):
no attribute screenshote

При том, что сам код я проверил у себя:

  1. import pyautogui  # Подключаем библиотеку
  2.  
  3. screenshot = pyautogui.screenshot()
  4. screenshot.save('screen.png')

у читателя код категорически не запускался. До корня проблемы добраться так и не смогли, однако — после того, как читатель переустановил библиотеку pyautogui — все заработало. Судя по всему имел место сбой в процессе установки библиотеки 🙁