PyAutoGUI - автоматизация графического интерфейса (супер подробная)

искусственный интеллект

Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность

до начала

Перед запуском установите необходимые модулиpyautogui,pyautoguiмодули могутWindowsОтправляйте виртуальные клавиши и щелчки мыши.

pip install -i https://pypi.douban.com/simple pyautogui

Проверьте размер экрана

在这里插入图片描述

pyautogui.size()Получите ширину и высоту экрана в пикселях (целое число).

>>> pyautogui.size()
Size(width=1920, height=1080)
# 也可以直接将宽,高进行保存 x, y = pyautogui.size()

Получить текущую позицию мыши

Функция возвращает кортеж координат X, Y текущей позиции.Если заданы параметры x, y, возвращаемый результат будет перезаписан.

>>> pyautogui.position(x=None, y=None)
Point(x=1437, y=817)

Проверить, есть ли указанные координаты на экране

Чтобы проверить, есть ли координаты X,Y на экране, передайте их (поддерживаются два целых числа, списки, кортежи) вonScreen()функция, которая возвращает, если они находятся в пределах экранаTrue, иначе возвратFalse.

>>> pyautogui.size()
(1920, 1080)
>>> pyautogui.onScreen(1920, 1080)
False
>>> pyautogui.onScreen(1919, 1079)
True

Установить время паузы

использоватьpyautogui.PAUSEПеременная устанавливает количество секунд для паузы. Например, в настройкеpyautogui.PAUSE = 1После этого каждыйPyAutoGUIВызов функции ожидает одну секунду после выполнения действия.

>>> pyautogui.PAUSE = 1


функция мыши

двигай мышь

Переместите мышь в указанное место.

pyautogui.moveTo(x=None, y=None, duration=0.0) # Переместите мышь в указанную позицию pyautogui.move(xOffset=None, yOffset=None, duration=0.0) # В PyAutoGUI 1.0 move заменяет moveRel, но может также использоваться moveRel

pyautogui.moveTo(200, 300, duration=0.5)   # 移动到坐标(200,300)
pyautogui.move(200, 300, duration=0.5)     # 从当前鼠标位置向右移动 200 向下移动 300

Основные параметры параметры:

x/xOffset: координата по оси X,moveTo()принимает значение 0 или положительное целое значение,move()/moveRel()Значение в середине может быть отрицательным, что означает перемещение влево в текущей позиции.

y/yOffset: координата оси Y,moveTo()принимает значение 0 или положительное целое значение,move()/moveRel()Значение в середине может быть отрицательным, что означает движение вверх с текущей позицией.

duration: время, необходимое для перемещения к указанной координате, по умолчанию 0, что означает немедленное завершение, единица измерения - с.


Щелчок мышью

использоватьclick()Завершите операцию щелчком мыши.

>>> pyautogui.click(x=None, y=None, clicks=1, interval=0.0, button=PRIMARY, duration=0.0)

Основные параметры:

x: Координата по оси X, по умолчаниюNone, то есть текущая координата оси X

y: Координата оси Y, по умолчаниюNone, то есть текущие координаты оси Y (Примечание: координаты оси X и оси Y можно указывать только одновременно, а не только одну)

clicks: количество кликов мышью, по умолчанию 1

interval: int или float, указывающее, сколько секунд ждать между каждым кликом, по умолчанию 0.0, что означает отсутствие паузы между кликами

button: по желаниюLEFT,MIDDLE,RIGHT,PRIMARY(щелкните левой кнопкой мыши) илиSECONDARY(правый клик). Его значение по умолчаниюPRIMARY

duration: Если указаны значения X, Y, а координаты не являются текущим положением мыши, тоdurationПараметр может вступить в силу, он представляет собой время, необходимое для перемещения к указанной координате, по умолчанию 0, что означает немедленное перемещение.

:speech_balloon: Другие операции кликов:

pyautogui.mouseDown()    # 按下鼠标按键(左键)
pyautogui.mouseUp()      # 释放鼠标按键(左键)

перетаскивание мышью

Удерживайте клавишу мыши для перетаскивания.

pyautogui.dragTo(x=None, y=None, duration=0.0, button=PRIMARY)     # 将鼠标拖动到指定位置  

pyautogui.drag(xOffset=0, yOffset=0, duration=0.0, button=PRIMARY)    # 将鼠标拖动到屏幕上相对于当前位置的一个点。

Основные параметры:

x, y/xOffset, yOffset: x и y указывают, где произошло событие мыши. еслиNone, используется текущая позиция мыши. Если это значение с плавающей запятой, оно округляется. Если за пределами экрана, событие происходит на краю экрана.

duration: Если указаны значения X, Y, а координаты не являются текущим положением мыши, тоdurationПараметр может вступить в силу, он представляет собой время, необходимое для перемещения к указанной координате, по умолчанию 0, что означает немедленное перемещение.

button: по желаниюLEFT,MIDDLE,RIGHT,PRIMARY(щелкните левой кнопкой мыши) илиSECONDARY(правый клик). Его значение по умолчаниюPRIMARY

:arrow_forward: Пример:请添加图片描述


прокрутка мыши

Вертикальная прокрутка, эффект от прокрутки на разных платформах может быть разным.

>>> pyautogui.scroll(100)   # 向上滚动100
>>> pyautogui.scroll(-100)  # 向下滚动100
>>> pyautogui.scroll(100, x=200, y=200)  # 移动到200, 然后执行滚动

горизонтальная прокрутка, (применяется кOS XиLinuxна платформе).

>>> pyautogui.hscroll(100)   # 向右滚动100
>>> pyautogui.hscroll(-100)   # 向左滚动100

:arrow_forward: Пример:

请添加图片描述

функция экрана

Функция скриншота

использоватьscreenshot()функция для реализации функции скриншота. перечислитьscreenshot()вернетImageобъект. При передаче строки имени файла снимок экрана будет сохранен в файл какImageОбъект возвращен. пройти черезregionаргументы ключевого слова для захвата указанной области, просто передайтеleft, top, width, heightсостоящий из кортежей (left,topверхняя левая координата).

>>> import pyautogui
>>> pyautogui.screenshot()
>>> pyautogui.screenshot(r'C:\Users\pc\Desktop\test.png')
>>> pyautogui.screenshot(r'C:\Users\pc\Desktop\test.png', region=(300, 300, 500, 1000))

GPS

Если вы не знаете точных координат на экране того, что вы хотите нажать, вы не можете позвонитьmoveTo()иclick()функция. Однако, если есть изображение кнопки, такое как изображение ниже, его можно вызватьlocateOnScreen('图片路径')Функция для получения координат. Возвращаемое значение представляет собой кортеж: (слева, сверху, ширина, высота). Этот кортеж можно передатьcenter()чтобы получить координаты (X,Y) центра области. Если изображение не найдено на экране,locateOnScreen()вызоветImageNotFoundExceptionаномальный.

>>> location = pyautogui.locateOnScreen('图片路径')
>>> pyautogui.center(location)

так же может бытьgrayscale=TrueПерейти кlocateOnScreen, для небольшого ускорения (около 30%). Это снижает насыщенность цветов изображений и скриншотов, ускоряя локализацию, но может привести к ложным совпадениям.



функция окна сообщения

PyAutoGUIиспользоватьPyMsgBoxФункция окна сообщения в обеспечивает кросс-платформенный чистыйPythonспособ отображенияjavascriptстиль окна сообщения.

функция оповещения()

>>> pyautogui.alert(text='text', title='title', button='alert!')
'alert!'

Отображает простое окно сообщения с текстом иalert!кнопка. Назад после нажатия кнопкиbuttonзначение . :arrow_forward: Пример:请添加图片描述


функция подтверждения()

Отображает окно сообщения с несколькими кнопками. Количество и текст кнопок можно задать самостоятельно. Щелчок по кнопке возвращает текст кнопки.

>>> pyautogui.confirm(text='text', title='title', buttons=['再考虑一下', '卸载'])
'卸载'

:arrow_forward: Пример:请添加图片描述


функция подсказки()

Отображает окно сообщения с кнопками «ОК», «Отмена» и полем ввода текста, где пользователь может ввести определенное содержимое. При нажатии кнопки подтверждения вернуть значение в поле ввода; при нажатии кнопки «Отмена» вернутьNone.

pyautogui.prompt(text='text', title='title', default='请输入文本信息')

:arrow_forward: Пример:请添加图片描述


функция пароль()

Отображает окно сообщения с кнопками «ОК», «Отмена» и поле ввода текста с символами, введенными как «*». Возвращает введенный текст, если нажата кнопка «ОК» или если нажата кнопка «Отмена».None.

pyautogui.password(text='text', title='title', default='密码', mask='*')

:arrow_forward: Пример:请添加图片描述



Функция управления клавиатурой

функция записи()

write()Функция будет вводить символы в переданной строке. Чтобы добавить интервал задержки между каждым нажатием символьной клавиши,intervalПараметр может быть установлен для добавления задержки между каждым нажатием клавиши.

>>> pyautogui.write('Hello world!', interval=0.25)    # 每个字符间隔0.25秒

Примечание: pyautogui не поддерживает автоматический фокус поля ввода.Перед вводом всего щелкните положение поля ввода.


функция нажатия()

press()Операция, выполняемая функцией, эквивалентна операции мыши.click(), который получает переданную ему строку.

press('num0', presses=1, interval=0.0)
  • keys: входящая строка клавиатуры
  • presses: количество клавиш управления, по умолчанию — один раз.
  • interval: Интервал времени каждого нажатия клавиши, по умолчанию 0

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']

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

Получите несколько строковых параметров, нажмите их последовательно и отпустите в обратном порядке.

pyautogui.hotkey('ctrl', 'shift', 'esc')

相当于
pyautogui.keyDown('ctrl')    # 按下 ctrl 
pyautogui.keyDown('shift')    # 按下 shift
pyautogui.keyDown('esc')    # 按下 esc
pyautogui.keyUp('esc')    # 释放 ctrl 
pyautogui.keyUp('shift')    # 释放 shift
pyautogui.keyUp('ctrl') # 释放 esc

:arrow_forward: Пример:请添加图片描述


Давайте пока разберемся здесь, если вам удобно,❤ Не забудьте поставить лайк! ! ! ❤
在这里插入图片描述 Я продолжу делиться статьями об анализе данных и в будущем, если вам интересно, вы можете кликнуть по ней и не потеряться~.
Для началаPythonИли хотите начатьPythonдрузей, вы можете искать на WeChat [Python新视野], чтобы общаться и учиться вместе, все исходят от новичков, иногда простой вопрос застревает надолго, но, может быть, кто-то другой вдруг поймет это с небольшой помощью.Я искренне надеюсь, что все вместе смогут добиться прогресса.