前期准备:

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是否正确

版权声明:本文为huangxiaocheng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/huangxiaocheng/p/9187249.html