前期准备:
python3.6
pyautogui
pywinauto
以下代码实现内容:
1.打开记事本
2.记事本中输入This is a test
3.保存内容
4.退出进程
import pyautogui from pywinauto import application import time import os class Autogui(): def __init__(self): self.app=application.Application() def run(self, tool_name): self.app.start(tool_name) time.sleep(2) #defined coordinates def coordinate(self,path): try: coordinates = pyautogui.locateOnScreen(path) x, y = pyautogui.center(coordinates) return x,y except Exception as e: print('Undefined coordinates: ', e) #Abnormal judgment def onscreen(self,x,y,content1): while pyautogui.onScreen(x, y) == True: print(content1) break def moveto(self,x,y): pyautogui.moveTo(x,y,0.5,pyautogui.easeInQuad) def moverel(self,x,y): pyautogui.moveRel(x,y,1,pyautogui.easeInQuad) def leftclick(self,x,y): pyautogui.moveTo(x,y,0.5,pyautogui.easeInQuad) pyautogui.PAUSE=0.5 pyautogui.click(button='left') def leftclick_down(self,x,y): pyautogui.moveTo(x,y,0.5,pyautogui.easeInQuad) pyautogui.PAUSE=0.5 pyautogui.mouseDown(button='left') def leftclick_up(self,x,y): pyautogui.moveTo(x,y,0.5,pyautogui.easeInQuad) pyautogui.PAUSE=0.5 pyautogui.mouseUp(button='left') def rightclick(self,x,y): pyautogui.moveTo(x,y,0.5,pyautogui.easeInQuad) pyautogui.PAUSE=0.5 pyautogui.click(button='right') def middleclick(self0,x,y): pyautogui.moveTo(x,y,0.5,pyautogui.easeInQuad) pyautogui.PAUSE=0.5 pyautogui.click(button='middle') def doubleclick(self,x,y): pyautogui.moveTo(x,y,0.5,pyautogui.easeInQuad) pyautogui.PAUSE=0.5 pyautogui.doubleClick(button='left') def keydown(self,key): pyautogui.keyDown(key) def press(self,key): pyautogui.press(key) def keyup(self,key): pyautogui.keyUp(key) def hotkey(self,key1,key2): pyautogui.hotkey(key1,key2) if __name__=='__main__': Test=Autogui() application_path=input('Application path : ') Test.run(application_path) # Test.run('notepad.exe') time.sleep(1) source_Path='./fouce.png' source_judge_Path='./fouce_judge.png' content1='The edit operation is correct' content2='The edit operation is fail' key1='s' key2='ctrlleft' # edit try: Test.leftclick(Test.coordinate(source_Path)[0], Test.coordinate(source_Path)[1]) pyautogui.typewrite('This is a test',0.1) time.sleep(0.5) Test.onscreen(Test.coordinate(source_judge_Path)[0], Test.coordinate(source_judge_Path)[1], content1) except Exception as e: print(content2 + ': ', e) # save try: time.sleep(2) Test.hotkey(key2, key1) time.sleep(0.5) print('The save operation is correct') except Exception as e: print('Save Error: ', e) try: time.sleep(2) os.system('taskkill /F /IM notepad.exe') except Exception as e: print('Exit Error: ',e) input()
贴上代码中两张图片,fouce.png 用来将光标定位到输入区域,fouce_judge.png 用来跟实际结果做对比,判断实际结果是否正确
fouce.png
fouce_judge.png
pyautogui自动化脚本优点
1.不用担心因为分辨率的改变导致脚本失效(这句话是错的,分辨率会影响识别)
2.完全自定义日志输出
3.真UI自动化,可以判断每一步UI是否正确