Maison >développement back-end >Tutoriel Python >Artefact d'interface graphique d'opération automatique Python——PyAutoGUI

Artefact d'interface graphique d'opération automatique Python——PyAutoGUI

PHPz
PHPzavant
2023-04-11 22:13:082134parcourir

Artefact d'interface graphique d'opération automatique Python——PyAutoGUI

Nous avons déjà expliqué comment utiliser Python pour automatiser les opérations de page dans le navigateur. Quelle que soit la méthode utilisée, les opérations correspondantes sont effectuées en localisant les éléments sur la page.

Aujourd'hui, nous allons parler de la façon d'automatiser les opérations sur le bureau. Semblables aux opérations d'automatisation des pages du navigateur, les opérations d'automatisation du bureau nécessitent également de localiser la position de la souris sur le bureau, puis d'effectuer les opérations correspondantes en fonction de la position positionnée.

Artefact de contrôle GUI

Notre protagoniste aujourd'hui est pyautogui est un pur outil d'automatisation GUI Python qui permet au programme de contrôler automatiquement une série d'opérations de la souris et du clavier pour atteindre l'objectif de tests automatisés.

L'installation de ce module est également la même que d'habitude :

  • pip3 install pyautogui

Vous pouvez l'utiliser directement après l'installation.

Opération de la souris

Mouvement de la souris

L'opération la plus basique du bureau est l'opération de la souris. Nous pouvons contrôler le mouvement de la souris :

# 移动鼠标
pyautogui.moveTo(200,400,duration=2)
pyautogui.moveRel(200,500,duration=2)

Le coin supérieur gauche du bureau entier est l'origine de l'axe de coordonnées, et toutes les opérations. se basent sur cette origine pour déterminer le lieu d’exploitation.

La première ligne consiste à déplacer la souris vers la position de pixel spécifiée (200 400), et la deuxième ligne de code consiste à déplacer la souris de 200 px vers la droite et de 400 px vers le bas en fonction du point actuel.

Les deux lignes de code ont une durée de paramètre commune. Ce paramètre représente le temps de mouvement, c'est-à-dire que l'opération de mouvement est terminée dans le temps spécifié et l'unité est la seconde.

Exécutez ces deux lignes de code et observez les changements de la souris à l'écran. N'est-ce pas incroyable ?

Nous pouvons également obtenir la position de la souris :

print(pyautogui.position())

C'est facile à comprendre, il s'agit d'obtenir la position des coordonnées de la souris dans l'écran actuel En exécutant cette ligne de code, nous obtiendrons des informations telles que les suivantes :

  • Point(x=400, y=900)

Clic de souris

Habituellement, notre souris a deux boutons à gauche et à droite, et les souris plus avancées ont un bouton au milieu.

Ma souris n'a que deux boutons, et il n'y a pas de bouton au milieu~

Artefact d'interface graphique d'opération automatique Python——PyAutoGUI

pyautogui a un traitement correspondant pour ces trois opérations de bouton :

# 鼠标点击,默认左键
pyautogui.click(100,100)
# 单击左键
pyautogui.click(100,100,button='left')
# 单击右键
pyautogui.click(100,300,button='right')
# 单击中间
pyautogui.click(100,300,button='middle')

Clic de souris, si le paramètre du bouton n'est pas spécifié, le par défaut est de cliquer sur la touche gauche, les deux premiers paramètres sont l'emplacement des coordonnées de clic.

Exécutez ce code et voyez ce qui arrive à votre bureau ?

En plus des opérations de clic, la souris dispose également d'opérations de double-clic :

# 双击左键
pyautogui.doubleClick(10,10)
# 双击右键
pyautogui.rightClick(10,10)
# 双击中键
pyautogui.middleClick(10,10)

La fonction d'opération est également très simple, je pense que tout le monde peut la comprendre d'un coup d'œil. Si vous ne pouvez pas la comprendre d'un coup d'œil, s'il vous plaît. jetez encore quelques regards !

Les amis qui connaissent le front-end peuvent immédiatement penser que les opérations de la souris ont un processus d'appui et de relâchement, et que nos opérations sur l'écran ont également des commandes correspondantes :

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

Glisser la souris

Nous pouvons contrôler la souris pour faire glisser vers le position de coordonnées spécifiée, et définissez le temps de fonctionnement :

pyautogui.dragTo(100,300,duration=1)

Cet effet d'opération est similaire au mouvement précédent.

Sur la base de l'expérience des mouvements précédents, nous faisons également glisser la souris dans la direction :

pyautogui.dragRel(100,300,duration=4)

Défilement de la souris

Dans les opérations de bureau, nous devons parfois faire défiler la souris vers le haut ou vers le bas. la fonction de défilement Pour contrôler : Le paramètre

pyautogui.scroll(30000)

est un entier, indiquant de combien d'unités faire défiler vers le haut ou vers le bas. Cette unité peut être différente selon les différents systèmes d'exploitation. Si vous faites défiler vers le haut, transmettez un entier positif, et si vous faites défiler vers le bas, transmettez un entier négatif.

Traitement de l'écran

Obtenir des captures d'écran

Supposons d'abord un scénario : je veux trouver un point rouge sur l'écran maintenant, que feriez-vous ? L'approche habituelle consiste à obtenir la valeur de couleur du point rouge, puis à comparer les points sur l'écran un par un jusqu'à ce qu'il soit trouvé.

pyautogui fournit un support pour notre scénario d'opération. Il existe trois fonctions pour réaliser ces trois choses.

im = pyautogui.screenshot()
im.save('screenshot.png')
rgb = im.getpixel((100, 500))
print(rgb)
match = pyautogui.pixelMatchesColor(500,500,(12,120,400))
print(match)

La première consiste à obtenir la fonction de capture d'écran, qui peut renvoyer un objet image Pillow ; la seconde consiste à obtenir la couleur du point de coordonnées spécifié dans la capture d'écran et à renvoyer la valeur de couleur RVB ; la couleur du point de coordonnées spécifié Comparez-le avec la couleur de la cible et renvoyez une valeur booléenne.

Améliorons à nouveau les exigences :

Je veux maintenant trouver l'icône du navigateur Edge sur l'écran, que allez-vous faire ?

L'approche habituelle consiste d'abord à savoir à quoi ressemble l'icône du navigateur Edge, si elle est verte ou bleue, grosse ou fine, n'est-ce pas ? Ensuite, nous faisons correspondre les icônes sur l'écran jusqu'à ce que nous trouvions une icône identique à notre icône cible, et nous obtenons le résultat.

Donc, notre code est le suivant :

# 图像识别(一个)
oneLocation = pyautogui.locateOnScreen('1.png')
print(oneLocation)
# 图像识别(多个)
allLocation = pyautogui.locateAllOnScreen('1.png')
print(list(allLocation))

Vous pouvez capturer l'icône d'une application sur le bureau, l'enregistrer sous forme d'image, puis utiliser les lignes de code ci-dessus pour l'identifier. Si l'identification réussit, vous. renverra un résultat similaire au suivant :

Box(left=20, top=89, width=33, height=34)
[Box(left=20, top=89, width=33, height=34)]

C'est l'emplacement de l'image sur le bureau. Si l'image n'est pas trouvée, Aucune ne sera renvoyée.

Saisie au clavier

Fonctions du clavier

La saisie au clavier a les fonctions suivantes couramment utilisées :

  • keyDown():模拟按键按下
  • keyUP():模拟按键松开
  • press():模拟一次按键过程,即 keyDown 和 keyUP 的组合
  • typewrite():模拟键盘输出内容

举个例子,大家平时输入感叹号(!)是怎么操作键盘的?

按住 shift 按键,然后再按住 1 按键,就可以了。用 pyautogui 控制就是:

pyautogui.keyDown('shift')
pyautogui.press('1')
pyautogui.keyUp('shift')

运行上面的代码,如果你的鼠标是放在编辑框中,你会得到一个感叹号!

我们还可以直接输出内容:

pyautogui.typewrite('python', 1)

第一个参数是输出的内容,第二个参数是间隔时间,单位是秒。

运行上面代码,你的编辑器里面就会每隔1秒钟按顺序输出 python 的6个字母。

特殊符号

有时我们需要输入键盘的一些特殊的符号按键,比如 换行、方向键等,这些有相对应的键盘字符串表示:

pyautogui.typewrite(['p','y','t','h','o','n','enter'])

运行上面代码,编辑器里面就会输出 python 之后换行。

其他特殊按键对应的字符串请参考官方说明。

快捷键

如果我要复制一个内容,大部分情况下会使用快键键 ctrl + c,按照上面讲的,我们应该这么实现:

pyautogui.keyDown('ctrl')
pyautogui.keyDown('c')
pyautogui.keyUp('c')
pyautogui.keyUp('ctrl')

这样写起来很麻烦,而且需要掌控按键的按下和释放的顺序。

pyautogui 为我们提供了一个快捷的函数:

pyautogui.hotkey('ctrl','c')

实现的效果和上面的4行代码相同。

信息框

当你在模拟一个桌面操作的时候,如果有分支操作需要根据实际情况来判断,你是不是需要有一个地方可以让你选择走哪个分支?

pyautogui 贴心地考虑到了这种情况,你可以通过弹出一个选择框来中断当前的操作,选择操作分支。

way = pyautogui.confirm('领导,该走哪条路?', buttons=['农村路', '水路', '陆路'])
print(way)

这里就是我们 HTML 页面的 confirm 选择框,选择了选项之后,我们可以获取到选择的选项,然后基于这个选项做判断,进入相应的操作分支。

除了选择确认框之外,还有其他一些提示信息框:

# 警告框
alert = pyautogui.alert(text='警告!敌军来袭!', title='警告框')
print(alert)
# 密码框
password = pyautogui.password('请输入密码')
print(password)
# 普通输入框
input = pyautogui.prompt('请输入指令:')
print(input)

总结

pyautogui 的基本知识就给大家介绍到这里,这个 python 模块的功能十分强大,函数都非常简单,对 python 初学者比较友好。学了这些基本知识之后,你可以运用这些基本知识的组合,去实现一些有趣的桌面自动化操作,快去尝试一把吧!

知识在于分享,转发这篇文章,让更多的人看到~

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer