美文网首页
python 积累 - windows自动化框架学习 - pya

python 积累 - windows自动化框架学习 - pya

作者: 许忠慧 | 来源:发表于2020-09-16 12:08 被阅读0次

    输入中文bug没有解决,目前的解决方案是Python 2.X环境下安装pyperclip和pyautogui,用复制粘贴来实现

    抱歉,这个没找到合适的安装包,只能通过

    pip install PyAutoGUI==0.9.33
    

    进行在线安装
    补:已找到下载地址:https://pypi.org/project/PyAutoGUI/#files

    实用小工具

    #-- coding: utf-8 --
    import pyautogui
    import time
    try:
        while True:
            x, y = pyautogui.position()    #获得鼠标所在位置
            print(x,y)     #打印当前鼠标所处位置
            time.sleep(1)
    except KeyboardInterrupt:
        print('\nExit.')
    

    必要措施:

    Python移动鼠标、点击键盘非常快,鼠标移动中中断脚本执行的方式:

    pyautogui.FAILSAFE = True时,如果把鼠标光标在屏幕左上角,PyAutoGUI函数就会产生pyautogui.FailSafeException异常。如果失控了,需要中断PyAutoGUI函数,就把鼠标光标在屏幕左上角。要禁用这个特性,就把FAILSAFE设置成False

    import pyautogui
    pyautogui.FAILSAFE = True
    pyautogui.PAUSE = 2.5  通过把pyautogui.PAUSE设置成float或int时间(秒),可以为所有的PyAutoGUI函数增加延迟
    

    鼠标相关函数:

    import pyautogui
    
    width, height = pyautogui.size()  # 获得屏幕的分辨率
    x, y = pyautogui.position()  # 获得鼠标所在坐标
    
    pyautogui.moveTo(300, 300, duration=0.25)  # 移动鼠标(绝对坐标)
    pyautogui.moveRel(100, 0, duration=0.25)   # 移动鼠标(相对位置),以当前鼠标位置为基准
    
    pyautogui.click(clicks=2, interval=0.25, x=0, y=0, button='left')   # 模拟鼠标点击操作。clicks 点击次数,后面的 interval是间隔 ;x,y 默认为当前坐标,可以不填;button 默认点击左键,可选参数:‘left’, ‘middle’,  ‘right’
    # click = pyautogui.mouseDown + pyautogui.mouseUp  点击等于封装了按下和弹起,如此可以模拟鼠标
    
    pyautogui.mouseDown(x=moveToX, y=moveToY, button='left')  # 鼠标按下
    pyautogui.mouseUp(x=moveToX, y=moveToY, button='left')  # 鼠标弹起
    
    pyautogui.doubleClick()  # 鼠标双击,其实就是执行两次click()函数
    pyautogui.rightClick()   # 右击
    pyautogui.middleClick()  # 中击
    
    pyautogui.dragTo()   # 拖拽,绝对坐标 参数等同于 moveTo
    pyautogui.dragRel()  # 拖拽,相对坐标 参数等同于 moveRel
    
    pyautogui.scroll(200)  # 滚轮,正值向上滚,负值向下滚
    

    图片相关处理:

    感觉该函数里的图片对比的方式有问题,不支持缩放过的图跟原图对比
    另一种图片对比方法参考这个里的clickwindows函数 : http://note.youdao.com/noteshare?id=6519ded2dad855194644bdf912ecd7c3&sub=9B593FB109AF4F8BA71F3DB58087B00D

    import pyautogui
    
    pyautogui.screenshot('foo.png') # 全屏截图
    im = pyautogui.screenshot(region=(0, 0, 300 ,400)) # 区域截图 左上角XY坐标值和宽度、高度传入截取
    
    im.getpixel((50, 200)) # 获得某个坐标的像素,假设返回值是:(30, 132, 153)
    pyautogui.pixelMatchesColor(50, 200, (30, 132, 153))  # 判断屏幕坐标的像素是不是等于某个值
    
    pyautogui.locateOnScreen('button.png', grayscale=False) # 找到 button 所在的位置。假设返回 (643, 745, 70, 29),如果不存在返回None  
    x, y = pyautogui.center((643, 745, 70, 29))  # 获得中心点,没找到会返回None
    pyautogui.locateCenterOnScreen('pyautogui/looks.png') # 等价于上面的前两布操作,直接获得截屏幕中心坐标
    
    # pyautogui.onScreen(0, 0) 检测 0,0 点在不在屏幕上,如果在返回true,否则返回false
    

    键盘按键

    import pyautogui
    
    pyautogui.typewrite('Hello world!', 0.25)  # 输入字符串,可选参数0.25为延时,可设置其他值
    pyautogui.typewrite(['enter', 'a', 'b', 'left', 'left', 'X', 'Y'], '0.25') # 输出: XYab
    
    pyautogui.KEYBOARD_KEYS # 按键名称列表
    
    pyautogui.keyDown('f4') # 按下某个键, f4为例
    pyautogui.keyUp('f4') # 松开某个键, f4为例
    pyautogui.press('f4') # 一次完整的击键,前面两个函数的组合 , f4为例
    pyautogui.hotkey('altleft', 'f4') #热键
    
    按键 含义
    ‘enter’(或‘return’ 或 ‘\n’) 回车
    ‘esc’ ESC键
    ‘shiftleft’, ‘shiftright’ 左右SHIFT键
    ‘altleft’, ‘altright’ 左右ALT键
    ‘ctrlleft’, ‘ctrlright’ 左右CTRL键
    ‘tab’ (‘\t’) TAB键
    ‘backspace’, ‘delete’ BACKSPACE 、DELETE键
    ‘pageup’, ‘pagedown’ PAGE UP 和 PAGE DOWN键
    ‘home’, ‘end’ HOME 和 END键
    ‘up’, ‘down’, ‘left’,‘right’ 箭头键
    ‘f1’, ‘f2’, ‘f3’…. F1…….F12键
    ‘volumemute’, ‘volumedown’,‘volumeup’ 有些键盘没有
    ‘pause’ PAUSE键
    ‘capslock’, ‘numlock’,‘scrolllock’ CAPS LOCK, NUM LOCK, 和 SCROLLLOCK 键
    ‘insert’ INS或INSERT键
    ‘printscreen’ PRTSC 或 PRINT SCREEN键
    ‘winleft’, ‘winright’ Win键
    ‘command’ Mac OS X command键

    消息弹窗

    pyautogui.alert(text='', title='', button='OK') # 显示一个简单的带文字和OK按钮的消息弹窗。用户点击后返回button的文字
    
    pyautogui.confirm(text='', title='', buttons=['OK', 'Cancel']) # 显示一个简单的带文字、OK和Cancel按钮的消息弹窗,用户点击后返回被点击button的文字
    pyautogui.confirm(text='', title='', buttons=range(10)) # 支持自定义数字、文字的列表
    
    pyautogui.prompt(text='', title='' , default='') # 可以输入的消息弹窗,带OK和Cancel按钮。用户点击OK按钮返回输入的文字,点击Cancel按钮返回None
    
    pyautogui.password(text='', title='', default='', mask='*') # 样式同prompt(),用于输入密码,消息用*表示
    

    相关文章

      网友评论

          本文标题:python 积累 - windows自动化框架学习 - pya

          本文链接:https://www.haomeiwen.com/subject/xdvcyktx.html