zoukankan      html  css  js  c++  java
  • python自动化之鼠标移动

    ################################用GUI自动化控制键盘和鼠标###############################

    '''

    http://pyautogui.readthedocs.org/介绍pyautogui功能

    有好几种方法防止或恢复GUI自动化问题:

    1、通过注销关闭程序:Ctrl-Alt-Del

    2、暂停和自动防故障装置:

             (1)、pyautogui.PAUSE=1.5 每个PyAutoGUI函数调用在执行动作之后,都会等待一秒半

                        非PyAutoGUI指令不会停顿

             (2)、pyautogui有自动防故障功能,将鼠标移到屏幕的左上角,自动防故障功能都将停止程序.

                        可以设置pyautogui.FAILSAFE=False,禁止这项功能           

    '''

    ################################移动鼠标##############################################

    ####pyautogui.moveTo()函数将鼠标立即移动到屏幕的指定位置:x,y为坐标,duration指定所需秒数

    import pyautogui

    for i in range(10):

             pyautogui.moveTo(100,100,duration=0.25)

             pyautogui.moveTo(200,100,duration=0.25)

             pyautogui.moveTo(200,200,duration=0.25)

             pyautogui.moveTo(100,200,duration=0.25)

    ####pyautogui.moveRel()函数相对于当前的位置移动鼠标

    import pyautogui

    for i in range(10):

             pyautogui.moveRel(100,0,duration=0.25)

             pyautogui.moveRel(0,100,duration=0.25)

             pyautogui.moveRel(-100,0,duration=0.25)

             pyautogui.moveRel(0,-100,duration=0.25)

    ####pyautogui.position()函数确定鼠标当前的位置

    pyautogui.position()

    ################################控制鼠标交互##############################################

    ###################################点击鼠标###############################################

    import pyautogui

    pyautogui.click(100,150,button='left')  ####在相应位置点击鼠标左键

    '''

    pyautogui.click(100,150,button='right') ####将在相应位置点击鼠标右键

    pyautogui.mouseDown() ####按下鼠标按键

    pyautogui.mouseDown() ####释放鼠标按键

    pyautogui.doubleClick()  ####执行双击鼠标左键

    pyautogui.rightClick()   ####执行双击右键

    pyautogui.middleClick()  ####执行双击中键

    '''

    ###################################拖放鼠标######################################################

    '''

    pyautogui.dragTo()和pyautogui.dragRel()函数:将鼠标拖动到一个新的位置,或相对当前位置的位置

    dragTo()和dragRel()的参数与moveTo()和moveRel相同:x坐标/水平移动,y坐标/垂直移动,以及可选的时间间隔

    '''

    import pyautogui,time

    time.sleep(5)

    pyautogui.click()

    distance=200

    while  distance>0:

             pyautogui.dragRel(distance,0,duration=0.2)

             distance=distance-5

             pyautogui.dragRel(0,distance,duration=0.2)

             pyautogui.dragRel(-distance,0,duration=0.2)

             distance=distance-5

             pyautogui.dragRel(0,distance,duration=0.2)

    ###################################滚动鼠标######################################################

    import pyperclip

    numbers=''

    for i in range(200):

             numbers=numbers+str(i)+' '

    pyperclip.copy(numbers)

    ###得到文本

    import time,pyautogui

    time.sleep(5);pyautogui.scroll(100)

    ################################获取屏幕快照#####################################################

    import pyautogui

    >>> im=pyautogui.screenshot()

    >>> im.save(r'C:UsersshenluDesktopone.jpg')

    ####im中包含一个屏幕快照的Image对象

    ################################分析屏幕快照##############################################

    >>> import pyautogui

    >>> im=pyautogui.screenshot()

    >>> im.getpixel((50,200))

    (255, 255, 255)

    >>> pyautogui.pixelMatchesColor(50,200,(255,255,254))

    False

    >>> pyautogui.pixelMatchesColor(50,200,(255,255,255))

    True

    ################################图像识别##############################################

    >>> pyautogui.locateOnScreen(r'C:UsersshenluDesktopone.jpg')

    >>> a=pyautogui.locateOnScreen(r'C:UsersshenluDesktopone.jpg')

    >>> print a

    None

    '''

    1、pyautogui.locateOnScreen()未成功识别,返回None;

    成功识别,返回首次发现该图像时左边的x,y坐标,宽度和高度

    2、如果该图像在屏幕上能够找到多处,locateAllOnScreen()函数返回一个list

    3、pyautogui.center()返回该区域中心的x,y坐标

    '''

    >>>pyautogui.locateOnScreen('submit.png')

    (643,745,70,29)

    >>>pyautogui.center((643,745,70,29))

    (678,759)

    >>>pyautogui.click((678,759))

    ################################控制键盘##############################################

    ##############################通过键盘发送一个字符串##################################

    '''

    pyautogui.typewrite()函数向计算机发送虚拟按键

    '''

    >>> import pyautogui

    >>> pyautogui.click(500,500);pyautogui.typewrite('Hello world!')

    ###################################键名###############################################

    import pyautogui

    pyautogui.typewrite(['a','b','left','left','X','Y'])  ####以下的调用表示按a键,b键,左箭头两次,X和Y键

    >>> pyautogui.typewrite(['a','b','left','left','X','Y'])

    XYab>>>

    >>> pyautogui.typewrite(['a','b','left','X','Y'])

    aXYb>>>

    '''

    键盘键字符串                                                                           含义

    'a','b','A','B','C','1','2','3'                              单个字符的键

    '!','@','#',等等

    'enter'(or 'return' or ' ')                             回车键

    'esc'                                                                                     Esc键

    ......

    '''

    ###################################按下和释放键盘####################################

    #'''

    #pyautogui.keyDown()和pyautogui,keyUp()将向计算机发送虚拟的按键和释放

    #'''

    import pyautogui

    pyautogui.keyDown('shift');pyautogui.press('4');pyautogui.keyUp('shift')

    ######################################热键组合#######################################

    import pyautogui

    pyautogui.hotkey('ctrl','c')      ##即Ctrl-C键

    '''

    等同于

    pyautogui.keyDown('ctrl')

    pyautogui.keyDown('c')

    pyautogui.keyUp('c')

    pyautogui.keyUp('ctrl')

    '''

    import pyautogui,time

    def commentAfterDelay():

             pyautogui.click(500,500)

             time.sleep(2)

             pyautogui.hotkey('shift','3')

             pyautogui.typewrite('In IDLE,Alt-3 comments out a line.')

            

    commentAfterDelay()

    ######################################现在鼠标在哪里#######################################

    ####显示鼠标坐标位置,给出这个像素的RGB颜色

    import pyautogui

    print 'Press Ctrl-C to quit'

    try:

             while  True:

                       x,y=pyautogui.position()

                       positionStr='X: '+str(x).rjust(4)+' Y: '+str(y).rjust(4)

                       pixelColor=pyautogui.screenshot().getpixel((x,y))

                       positionStr +='RGB: ('+str(pixelColor[0]).rjust(3)

                       positionStr +=', '+str(pixelColor[1]).rjust(3)

                       positionStr +=', '+str(pixelColor[2]).rjust(3) +')'

                       print positionStr,

                       print ''*len(positionStr),

    except KeyboardInterrupt:

             print ' Done.'

    ###########################每隔10秒移动下鼠标###########################

    import pyautogui,time

    try:

             while True:

                       time.sleep(10)

                       pyautogui.moveRel(-100,100,duration=0.25)

    except KeyboardInterrupt:

             print ' Done.'

  • 相关阅读:
    CF1442E. Black, White and Grey Tree
    CF1442D. Sum
    CF1444D. Rectangular Polyline
    arc107F
    外心与垂心关系
    CF1434E. A Convex Game
    CF1434D. Roads and Ramen
    arc106E
    arc106F
    CF704E. Iron Man
  • 原文地址:https://www.cnblogs.com/dudumiaomiao/p/7241989.html
Copyright © 2011-2022 走看看