Rumah > Artikel > pembangunan bahagian belakang > Artifak GUI operasi automatik Python——PyAutoGUI
Kami sebelum ini telah bercakap tentang cara menggunakan Python untuk mengautomasikan operasi halaman dalam penyemak imbas Tidak kira kaedah yang digunakan, operasi yang sepadan dilakukan dengan mencari elemen pada halaman.
Hari ini kita akan bercakap tentang cara mengautomasikan operasi pada desktop. Sama seperti operasi automasi halaman penyemak imbas, operasi automasi desktop juga memerlukan pengesanan kedudukan tetikus pada desktop, dan kemudian melakukan operasi yang sepadan berdasarkan kedudukan kedudukan.
Protagonis kami hari ini ialah pyautogui ialah alat automasi GUI Python tulen yang membolehkan program mengawal satu siri operasi tetikus dan papan kekunci untuk mencapai tujuan ujian automatik.
Pemasangan modul ini juga sama seperti biasa:
Anda boleh menggunakannya terus selepas pemasangan.
Operasi desktop yang paling asas ialah operasi tetikus Kita boleh mengawal pergerakan tetikus:
# 移动鼠标 pyautogui.moveTo(200,400,duration=2) pyautogui.moveRel(200,500,duration=2)
The seluruh desktop Sudut kiri atas ialah asal paksi koordinat, dan semua operasi menggunakan asal ini untuk menentukan kedudukan operasi.
Barisan pertama kod menggerakkan tetikus ke kedudukan piksel yang ditentukan (200,400) dan baris kedua kod menggerakkan tetikus 200px ke kanan dan 400px ke bawah mengikut titik semasa.
Kedua-dua baris kod mempunyai tempoh parameter yang sama Parameter ini mewakili masa pergerakan, iaitu, operasi pergerakan selesai dalam masa yang ditetapkan dan unit adalah saat.
Jalankan dua baris kod ini dan perhatikan perubahan tetikus skrin.
Kami juga boleh mendapatkan kedudukan tetikus:
print(pyautogui.position())
Ini mudah difahami, ia adalah untuk mendapatkan kedudukan koordinat tetikus dalam skrin semasa dengan menjalankan baris kod ini , kami akan mendapat maklumat seperti berikut :
Biasanya, tetikus kita mempunyai dua butang di kiri dan kanan, titik lanjutan Terdapat juga butang di tengah tetikus.
Tetikus saya hanya mempunyai dua butang dan tiada butang di tengah, sayangnya~
pyautogui mempunyai pemprosesan yang sepadan untuk tiga operasi butang ini:
# 鼠标点击,默认左键 pyautogui.click(100,100) # 单击左键 pyautogui.click(100,100,button='left') # 单击右键 pyautogui.click(100,300,button='right') # 单击中间 pyautogui.click(100,300,button='middle')
Klik tetikus Jika parameter butang tidak dinyatakan, lalainya ialah mengklik butang kiri Dua parameter pertama ialah lokasi koordinat klik.
Jalankan kod ini dan lihat apa yang berlaku pada desktop anda?
Selain operasi klik, tetikus juga mempunyai operasi klik dua kali:
# 双击左键 pyautogui.doubleClick(10,10) # 双击右键 pyautogui.rightClick(10,10) # 双击中键 pyautogui.middleClick(10,10)
Fungsi operasi juga sangat mudah. Saya percaya semua orang boleh memahaminya dengan sepintas lalu tidak memahaminya sekilas, sila lihat beberapa pandangan lagi!
Rakan yang biasa dengan bahagian hadapan mungkin dengan serta-merta berfikir bahawa operasi tetikus mempunyai proses menekan dan melepaskan, dan operasi skrin kami juga mempunyai kawalan yang sepadan:
# 鼠标按下 pyautogui.mouseDown() # 鼠标释放 pyautogui.mouseUp()
Kita boleh mengawal tetikus untuk menyeret ke kedudukan koordinat yang ditentukan dan menetapkan masa operasi:
pyautogui.dragTo(100,300,duration=1)
Kesan operasi ini serupa dengan pergerakan sebelumnya.
Berdasarkan pengalaman bergerak sebelum ini, kami turut menyeret tetikus ke arah:
pyautogui.dragRel(100,300,duration=4)
Dalam operasi desktop, kadangkala kita perlu menatal tetikus untuk mencapai ke atas Atau kedudukan ke bawah, pada masa ini kita boleh menggunakan fungsi tatal untuk mengawal:
pyautogui.scroll(30000)
Parameter ialah integer, menunjukkan bilangan unit untuk menatal ke atas atau ke bawah Unit ini mungkin berbeza bergantung kepada sistem pengendalian yang berbeza. Jika anda menatal ke atas, masukkan integer positif, dan jika anda menatal ke bawah, masukkan integer negatif.
Mari kita anggap senario dahulu: Saya mahu mencari titik merah pada skrin sekarang, apakah yang akan anda lakukan? Pendekatan biasa adalah untuk mendapatkan nilai warna titik merah, dan kemudian membandingkan titik pada skrin satu demi satu sehingga ia ditemui.
pyautogui menyediakan sokongan untuk senario operasi kami. Terdapat tiga fungsi untuk melengkapkan tiga perkara ini.
im = pyautogui.screenshot() im.save('screenshot.png') rgb = im.getpixel((100, 500)) print(rgb) match = pyautogui.pixelMatchesColor(500,500,(12,120,400)) print(match)
Pertama ialah mendapatkan fungsi tangkapan skrin, yang boleh mengembalikan objek imej Bantal; ialah Bandingkan warna titik koordinat yang ditentukan dengan warna sasaran dan kembalikan nilai Boolean.
Mari tingkatkan keperluan sekali lagi:
Saya kini ingin mencari ikon penyemak imbas tepi pada skrin, apakah yang akan anda lakukan?
Pendekatan yang biasa dilakukan ialah mengetahui dahulu rupa ikon pelayar tepi, sama ada hijau atau biru, gemuk atau kurus, bukan? Kemudian kami memadankan ikon pada skrin sehingga kami menemui ikon yang sama dengan ikon sasaran kami, dan kami mendapat hasilnya.
Jadi, kod kami adalah seperti berikut:
# 图像识别(一个) oneLocation = pyautogui.locateOnScreen('1.png') print(oneLocation) # 图像识别(多个) allLocation = pyautogui.locateAllOnScreen('1.png') print(list(allLocation))
Anda boleh menangkap ikon aplikasi pada desktop, menyimpannya sebagai gambar, dan kemudian menggunakan baris kod di atas untuk kenal pasti dan kenal pasti Jika berjaya, anda akan mengembalikan hasil yang serupa dengan yang berikut:
Box(left=20, top=89, width=33, height=34) [Box(left=20, top=89, width=33, height=34)]
Ini ialah lokasi gambar pada desktop Jika gambar tidak ditemui, Tiada akan dikembalikan.
Input papan kekunci mempunyai fungsi yang biasa digunakan berikut:
举个例子,大家平时输入感叹号(!)是怎么操作键盘的?
按住 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 初学者比较友好。学了这些基本知识之后,你可以运用这些基本知识的组合,去实现一些有趣的桌面自动化操作,快去尝试一把吧!
知识在于分享,转发这篇文章,让更多的人看到~
Atas ialah kandungan terperinci Artifak GUI operasi automatik Python——PyAutoGUI. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!