• dogtail的使用方法(四)——实现鼠标和键盘的操作


    dogtail自带鼠标和键盘的操作方法,使用方法如下:

    环境配置

    安装dogtail:

    sudo pip3 install dogtail
    

    导入包

    dogtail中,控制鼠标键盘的包是在rawinput里面:

    from dogtail import rawinput
    

    点击

    rawinput.click(x, y, button=1, check=True)
    

    1.x, y 为所要点击的坐标

    2.button为鼠标左右键,1代表左键,2代表滚轮,3代表右键,默认参数,可以不传

    3.check为坐标检查,如果为负数,会抛异常,默认参数,可以不传

    双击

    rawinput.doubleClick(x, y, button=1, check=True)
    

    点击(按住不释放)

    rawinput.press(x, y, button=1, check=True)
    

    鼠标释放

    rawinput.release(x, y, button=1, check=True)
    

    鼠标移动(绝对位置)

    rawinput.absoluteMotion(x, y, mouseDelay=None, check=True)
    

    1.x, y 为所要移动到的坐标

    2.mouseDelay为鼠标移动的延迟时间,默认参数,可以不传

    3.check为坐标检查,如果为负数,会抛异常,默认参数,可以不传

    鼠标移动(相对位置)

    rawinput.relativeMotion(x, y, mouseDelay=None)
    

    1.x, y 为所要移动的相对位置,比如从当前位置移动100,100,注意和绝对位置的区别

    2.mouseDelay为鼠标移动的延迟时间,默认参数,可以不传

    拖拽

    rawinput.drag(fromXY, toXY, button=1, check=True)
    

    1.fromXY 起始位置的坐标(x, y )

    2.toXY 目标位置的坐标(x, y )

    这个拖拽实际为绝对位置的拖拽,rawinput没有提供相对位置的拖拽,但是我们可以通过:

    rawinput.press(x, y ) 
    rawinput.relativeMotion(x, y)
    rawinput.release(x, y)
    

    进行二次封装实现相对位置的拖拽。

    输入文本

    rawinput.typeText(string)
    

    传入要输入的字符串即可

    注意: 不支持中文输入,经过分析源码,输入的功能实际是遍历字符串里面的每一个字符然后调用的pressKey,也就是敲键盘的方式实现输入,所以中文输入的bug无解。在UOS上使用这个方法输入中文的时候,系统直接崩溃(注销)。

    点击键盘

    rawinput.pressKey(keyName)
    
    keyName = {
        'enter': 'Return',
        'esc': 'Escape',
        'alt': 'Alt_L',
        'control': 'Control_L',
        'ctrl': 'Control_L',
        'shift': 'Shift_L',
        'del': 'Delete',
        'ins': 'Insert',
        'pageup': 'Page_Up',
        'pagedown': 'Page_Down',
        ' ': 'space',
        '	': 'Tab',
        '
    ': 'Return'
    }
    

    组合按键

    rawinput.keyCombo(comboString)
    
    comboString组合按键,比如:
    '<Control><Alt>p' 
    '<Control><Shift>PageUp' 
    '<Control>q'
    
    没伞的孩子,就要学会在雨中奔跑!
  • 相关阅读:
    Java 之 Junit 单元测试
    数据结构和算法概述
    数组模拟队列
    单链表
    链表(Linked List)
    其它/编程 error201599
    SQL Server 生成 数据字典 / 数据库文档
    其它/编程 error2016420
    其它/编程 error2016118
    MySQL 数据 导入到 SQL Service
  • 原文地址:https://www.cnblogs.com/mikigo/p/14154939.html
Copyright © 2020-2023  润新知