Heim >Backend-Entwicklung >Python-Tutorial >GUI-Artefakt für automatische Python-Operationen – PyAutoGUI

GUI-Artefakt für automatische Python-Operationen – PyAutoGUI

PHPz
PHPznach vorne
2023-04-11 22:13:082137Durchsuche

GUI-Artefakt für automatische Python-Operationen – PyAutoGUI

Wir haben bereits darüber gesprochen, wie Sie mit Python Seitenvorgänge im Browser automatisieren können. Unabhängig davon, welche Methode verwendet wird, werden die entsprechenden Vorgänge durch Suchen von Elementen auf der Seite ausgeführt.

Heute werden wir darüber sprechen, wie man Vorgänge auf dem Desktop automatisieren kann. Ähnlich wie bei Browserseiten-Automatisierungsvorgängen ist es auch bei Desktop-Automatisierungsvorgängen erforderlich, die Position der Maus auf dem Desktop zu lokalisieren und dann entsprechende Vorgänge basierend auf der positionierten Position auszuführen.

GUI-Steuerungsartefakt

Unser heutiger Protagonist ist pyautogui, ein reines Python-GUI-Automatisierungstool, mit dem das Programm eine Reihe von Maus- und Tastaturoperationen automatisch steuern kann, um den Zweck automatisierter Tests zu erreichen.

Die Installation dieses Moduls erfolgt ebenfalls wie gewohnt:

  • pip3 install pyautogui

Sie können es direkt nach der Installation verwenden.

Mausbedienung

Mausbewegung

Die grundlegendste Desktop-Bedienung ist die Mausbedienung. Wir können die Bewegung der Maus steuern:

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

Der gesamte Desktop hat die obere linke Ecke als Ursprung der Koordinatenachse und aller Operationen basieren auf diesem Ursprung, um die Betriebsposition zu bestimmen.

Die erste Zeile besteht darin, die Maus an die angegebene Pixelposition (200.400) zu bewegen, und die zweite Codezeile besteht darin, die Maus entsprechend dem aktuellen Punkt um 200 Pixel nach rechts und 400 Pixel nach unten zu bewegen.

Beide Codezeilen haben einen gemeinsamen Parameter Dauer. Dieser Parameter stellt die Bewegungszeit dar, dh der Bewegungsvorgang wird innerhalb der angegebenen Zeit abgeschlossen, und die Einheit ist Sekunden.

Führen Sie diese beiden Codezeilen aus und beobachten Sie die Änderungen der Bildschirmmaus. Ist das nicht erstaunlich?

Wir können auch die Mausposition ermitteln:

print(pyautogui.position())

Das ist leicht zu verstehen. Durch Ausführen dieser Codezeile erhalten wir Informationen wie die folgenden:

  • Punkt(x=400, y=900)

Mausklick

Normalerweise hat unsere Maus zwei Tasten links und rechts, und fortgeschrittenere Mäuse haben eine Taste in der Mitte.

Meine Maus hat nur zwei Tasten und es gibt keine Taste in der Mitte. Pyautogui verfügt über eine entsprechende Verarbeitung für diese drei Tastenoperationen:

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

Mausklick, wenn der Tastenparameter nicht angegeben ist Standardmäßig wird mit der linken Maustaste geklickt. Die ersten beiden Parameter sind die Position der Klickkoordinaten. GUI-Artefakt für automatische Python-Operationen – PyAutoGUI

Führen Sie diesen Code aus und sehen Sie, was mit Ihrem Desktop passiert?

Zusätzlich zu den Klickoperationen verfügt die Maus auch über Doppelklickoperationen:

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

Die Bedienungsfunktion ist meiner Meinung nach auch sehr einfach. Wenn Sie sie nicht auf einen Blick verstehen können, bitte werfen Sie noch ein paar Blicke darauf!

Freunde, die mit dem Front-End vertraut sind, denken vielleicht sofort, dass Mausoperationen einen Prozess des Drückens und Loslassens haben, und unsere Bildschirmoperationen verfügen auch über entsprechende Steuerelemente:

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

Mausziehen

Wir können die Maus steuern, um dorthin zu ziehen Geben Sie die Koordinatenposition an und stellen Sie die Betriebszeit ein:

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

Dieser Betriebseffekt ähnelt der vorherigen Bewegung.

Basierend auf den Erfahrungen früherer Bewegungen ziehen wir die Maus auch in die Richtung:

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

Maus-Scrollen

Bei Desktop-Operationen müssen wir manchmal die Maus nach oben oder unten scrollen. Dies können wir verwenden Die Scroll-Funktion Zur Steuerung: Der Parameter

pyautogui.scroll(30000)

ist eine Ganzzahl, die angibt, um wie viele Einheiten nach oben oder unten gescrollt werden soll. Diese Einheit kann je nach Betriebssystem unterschiedlich sein. Wenn Sie nach oben scrollen, übergeben Sie eine positive Ganzzahl, und wenn Sie nach unten scrollen, übergeben Sie eine negative Ganzzahl.

Bildschirmverarbeitung

Screenshots erstellen

Nehmen wir zunächst ein Szenario an: Ich möchte jetzt einen roten Punkt auf dem Bildschirm finden, was würden Sie tun? Der übliche Ansatz besteht darin, den Farbwert des roten Punkts zu ermitteln und dann die Punkte auf dem Bildschirm einzeln zu vergleichen, bis er gefunden wird.

pyautogui bietet Unterstützung für unser Betriebsszenario. Es gibt drei Funktionen, um diese drei Dinge zu erledigen.

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

Die erste besteht darin, die Screenshot-Funktion abzurufen, die ein Kissenbildobjekt zurückgeben kann. Die zweite besteht darin, die Farbe des angegebenen Koordinatenpunkts im Screenshot abzurufen und den RGB-Farbwert zurückzugeben die Farbe des angegebenen Koordinatenpunkts. Vergleichen Sie sie mit der Farbe des Ziels und geben Sie einen booleschen Wert zurück.

Lassen Sie uns die Anforderungen noch einmal aktualisieren:

Ich möchte jetzt das Edge-Browser-Symbol auf dem Bildschirm finden. Was werden Sie tun?

Der übliche Ansatz besteht darin, zunächst zu wissen, wie das Edge-Browsersymbol aussieht, ob es grün oder blau, dick oder dünn ist, oder? Dann gleichen wir die Symbole auf dem Bildschirm ab, bis wir ein Symbol finden, das mit unserem Zielsymbol übereinstimmt, und erhalten das Ergebnis.

Unser Code lautet also wie folgt:

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

Sie können das Symbol einer Anwendung auf dem Desktop erfassen, als Bild speichern und dann die obigen Codezeilen verwenden, um sie zu identifizieren gibt ein Ergebnis ähnlich dem folgenden zurück:

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

Dies ist der Speicherort des Bildes auf dem Desktop. Wenn das Bild nicht gefunden wird, wird „Keine“ zurückgegeben.

Tastatureingabe

Tastaturfunktionen

Die Tastatureingabe verfügt über die folgenden häufig verwendeten Funktionen:

  • 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 初学者比较友好。学了这些基本知识之后,你可以运用这些基本知识的组合,去实现一些有趣的桌面自动化操作,快去尝试一把吧!

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

Das obige ist der detaillierte Inhalt vonGUI-Artefakt für automatische Python-Operationen – PyAutoGUI. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen