如何使用python来模拟鼠标点击(将通过实例自动化模拟在360浏览器中自动搜索"python")

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用python来模拟鼠标点击(将通过实例自动化模拟在360浏览器中自动搜索"python")相关的知识,希望对你有一定的参考价值。

一、准备工作:

安装pywin32,后面开发需要pywin32的支持,否则无法完成与windows层面相关的操作。

pywin32的具体安装及注意事项:

1、整体开发环境:

  基于windows7操作系统;

  提前安装python(因为篇幅问题,在此不详细讲解python环境的安装,大家可以自备楼梯);

  大家可以在cmd中测试下python环境是否安装好:

技术分享

大家可以看到我电脑上已经安装好了Python,并显示版本与是V 3.6.2。

注:自己电脑上的Python版本号一定要知道,后面安装pywin32是要与python的版本相对应才行。

2、具体安装方法及详细的步骤:

首先下载pywin32安装包

①.访问pywin32下载地址:https://sourceforge.net/projects/pywin32/files/pywin32/

②.务必要下载与自己电脑上已安装的python版本对应的pywin32安装包,例如python3.6.2   64位对应的安装包为pywin32-221.win-amd64-py3.6.exe

点击第一项:Build 221进入(pywin32-221.win-amd64-py3.6.exe在这里面下面)

技术分享

选择pywin32-221.win-amd64-py3.6.exe文件下载到本地,大小是9.5M,不是很大,下载很快的。 

技术分享

3.安装刚下载好的pywin32-221.win-amd64-py3.6.exe安装包,双击运行,之后就是一路的点下一步就可以安装完成。

需要注意的是:安装目录是不能自己乱改变的,系统会根据你电脑上的python安装路径自动填写,

我的电脑上的python安装在C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python36;

所以系统会自动根据我安装的Python安装目录将pywin32安装在C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python36\\Lib\\site-packages\\目录中。

如果说你安装过程中系统没有自动给你填写pywin32的安装目录,说明你的python安装有问题,请检查自己的python安装那里出问题。(提示下:安装完Python后注意配置环境变量)

技术分享

  如果你一切还胜利的话,那么恭喜你可以继续往后看。

④为了确定安装pywin32成功,你一定要检查下安装结果,可以在python命令行输入import win32api。

技术分享

也可以在python shell中测试下pywin32是否成功。

技术分享

成功的话,在开始菜单中的python3.6目录下会有PythonWin这项。

技术分享

如果上面测试没有报错,开始菜单也有PythonWin,则说明安装Pywin32成功了。

如果报错的话说明PYTHONPATH环境变量没有配置好。

⑤如何配置PYTHONPATH环境变量,这时你需要将python安装目录下lib目录中的site-packages路径添加到PYTHONPATH环境变量中。

注意:PYTHONPATH是用户变量。如果没有这项可以新建。

技术分享

技术分享

技术分享

技术分享

可以在CMD中查看下path。

技术分享

 ⑥大家一定要保证pywin32版本和python版本一致,对32位和64位的支持也要和python一致,64位的系统就安装64位的pywin32,32位的就安装32位的pywin32。

如果有问题的话,请重复步骤⑤再次检验安装配置结果再检查测试下。

二、开始开发:

1、从开始菜单打开pythonwin

技术分享

技术分享

2、在pythonWin中新建.py文件:

技术分享

新建文件时,在弹出窗中选择Python Script,再点击OK就行了。

技术分享

3、开始编码:直接上代码了。

## _*_ coding:UTF-8 _*_
import win32api
import win32con
import win32gui
from ctypes import *
import time

在Python程序中导入win32api,win32con,win32gui,其次引入ctypes模块,载入动态链接库(后面会用到C函数)。

大家想要对Python调用ctypes如何使用C函数想更多了解的,可以去看看Python调用ctypes使用C函数printf

VK_CODE = {
    backspace:0x08,
    tab:0x09,
    clear:0x0C,
    enter:0x0D,
    shift:0x10,
    ctrl:0x11,
    alt:0x12,
    pause:0x13,
    caps_lock:0x14,
    esc:0x1B,
    spacebar:0x20,
    page_up:0x21,
    page_down:0x22,
    end:0x23,
    home:0x24,
    left_arrow:0x25,
    up_arrow:0x26,
    right_arrow:0x27,
    down_arrow:0x28,
    select:0x29,
    print:0x2A,
    execute:0x2B,
    print_screen:0x2C,
    ins:0x2D,
    del:0x2E,
    help:0x2F,
    0:0x30,
    1:0x31,
    2:0x32,
    3:0x33,
    4:0x34,
    5:0x35,
    6:0x36,
    7:0x37,
    8:0x38,
    9:0x39,
    a:0x41,
    b:0x42,
    c:0x43,
    d:0x44,
    e:0x45,
    f:0x46,
    g:0x47,
    h:0x48,
    i:0x49,
    j:0x4A,
    k:0x4B,
    l:0x4C,
    m:0x4D,
    n:0x4E,
    o:0x4F,
    p:0x50,
    q:0x51,
    r:0x52,
    s:0x53,
    t:0x54,
    u:0x55,
    v:0x56,
    w:0x57,
    x:0x58,
    y:0x59,
    z:0x5A,
    numpad_0:0x60,
    numpad_1:0x61,
    numpad_2:0x62,
    numpad_3:0x63,
    numpad_4:0x64,
    numpad_5:0x65,
    numpad_6:0x66,
    numpad_7:0x67,
    numpad_8:0x68,
    numpad_9:0x69,
    multiply_key:0x6A,
    add_key:0x6B,
    separator_key:0x6C,
    subtract_key:0x6D,
    decimal_key:0x6E,
    divide_key:0x6F,
    F1:0x70,
    F2:0x71,
    F3:0x72,
    F4:0x73,
    F5:0x74,
    F6:0x75,
    F7:0x76,
    F8:0x77,
    F9:0x78,
    F10:0x79,
    F11:0x7A,
    F12:0x7B,
    F13:0x7C,
    F14:0x7D,
    F15:0x7E,
    F16:0x7F,
    F17:0x80,
    F18:0x81,
    F19:0x82,
    F20:0x83,
    F21:0x84,
    F22:0x85,
    F23:0x86,
    F24:0x87,
    num_lock:0x90,
    scroll_lock:0x91,
    left_shift:0xA0,
    right_shift :0xA1,
    left_control:0xA2,
    right_control:0xA3,
    left_menu:0xA4,
    right_menu:0xA5,
    browser_back:0xA6,
    browser_forward:0xA7,
    browser_refresh:0xA8,
    browser_stop:0xA9,
    browser_search:0xAA,
    browser_favorites:0xAB,
    browser_start_and_home:0xAC,
    volume_mute:0xAD,
    volume_Down:0xAE,
    volume_up:0xAF,
    next_track:0xB0,
    previous_track:0xB1,
    stop_media:0xB2,
    play/pause_media:0xB3,
    start_mail:0xB4,
    select_media:0xB5,
    start_application_1:0xB6,
    start_application_2:0xB7,
    attn_key:0xF6,
    crsel_key:0xF7,
    exsel_key:0xF8,
    play_key:0xFA,
    zoom_key:0xFB,
    clear_key:0xFE,
    +:0xBB,
    ,:0xBC,
    -:0xBD,
    .:0xBE,
    /:0xBF,
    `:0xC0,
    ;:0xBA,
    [:0xDB,
    \\\\:0xDC,
    ]:0xDD,
    "":0xDE,
    `:0xC0}

键盘上符号对应的VK_CODE的具体值。参考

test.py

#
# _*_ coding:UTF-8 _*_
import win32api
import win32con
import win32gui
from ctypes import *
import time
VK_CODE = {
    backspace:0x08,
    tab:0x09,
    clear:0x0C,
    enter:0x0D,
    shift:0x10,
    ctrl:0x11,
    alt:0x12,
    pause:0x13,
    caps_lock:0x14,
    esc:0x1B,
    spacebar:0x20,
    page_up:0x21,
    page_down:0x22,
    end:0x23,
    home:0x24,
    left_arrow:0x25,
    up_arrow:0x26,
    right_arrow:0x27,
    down_arrow:0x28,
    select:0x29,
    print:0x2A,
    execute:0x2B,
    print_screen:0x2C,
    ins:0x2D,
    del:0x2E,
    help:0x2F,
    0:0x30,
    1:0x31,
    2:0x32,
    3:0x33,
    4:0x34,
    5:0x35,
    6:0x36,
    7:0x37,
    8:0x38,
    9:0x39,
    a:0x41,
    b:0x42,
    c:0x43,
    d:0x44,
    e:0x45,
    f:0x46,
    g:0x47,
    h:0x48,
    i:0x49,
    j:0x4A,
    k:0x4B,
    l:0x4C,
    m:0x4D,
    n:0x4E,
    o:0x4F,
    p:0x50,
    q:0x51,
    r:0x52,
    s:0x53,
    t:0x54,
    u:0x55,
    v:0x56,
    w:0x57,
    x:0x58,
    y:0x59,
    z:0x5A,
    numpad_0:0x60,
    numpad_1:0x61,
    numpad_2:0x62,
    numpad_3:0x63,
    numpad_4:0x64,
    numpad_5:0x65,
    numpad_6:0x66,
    numpad_7:0x67,
    numpad_8:0x68,
    numpad_9:0x69,
    multiply_key:0x6A,
    add_key:0x6B,
    separator_key:0x6C,
    subtract_key:0x6D,
    decimal_key:0x6E,
    divide_key:0x6F,
    F1:0x70,
    F2:0x71,
    F3:0x72,
    F4:0x73,
    F5:0x74,
    F6:0x75,
    F7:0x76,
    F8:0x77,
    F9:0x78,
    F10:0x79,
    F11:0x7A,
    F12:0x7B,
    F13:0x7C,
    F14:0x7D,
    F15:0x7E,
    F16:0x7F,
    F17:0x80,
    F18:0x81,
    F19:0x82,
    F20:0x83,
    F21:0x84,
    F22:0x85,
    F23:0x86,
    F24:0x87,
    num_lock:0x90,
    scroll_lock:0x91,
    left_shift:0xA0,
    right_shift :0xA1,
    left_control:0xA2,
    right_control:0xA3,
    left_menu:0xA4,
    right_menu:0xA5,
    browser_back:0xA6,
    browser_forward:0xA7,
    browser_refresh:0xA8,
    browser_stop:0xA9,
    browser_search:0xAA,
    browser_favorites:0xAB,
    browser_start_and_home:0xAC,
    volume_mute:0xAD,
    volume_Down:0xAE,
    volume_up:0xAF,
    next_track:0xB0,
    previous_track:0xB1,
    stop_media:0xB2,
    play/pause_media:0xB3,
    start_mail:0xB4,
    select_media:0xB5,
    start_application_1:0xB6,
    start_application_2:0xB7,
    attn_key:0xF6,
    crsel_key:0xF7,
    exsel_key:0xF8,
    play_key:0xFA,
    zoom_key:0xFB,
    clear_key:0xFE,
    +:0xBB,
    ,:0xBC,
    -:0xBD,
    .:0xBE,
    /:0xBF,
    `:0xC0,
    ;:0xBA,
    [:0xDB,
    \\\\:0xDC,
    ]:0xDD,
    "":0xDE,
    `:0xC0}
class POINT(Structure):
    _fields_ = [("x", c_ulong),("y", c_ulong)]
def get_mouse_point():
    po = POINT()
    windll.user32.GetCursorPos(byref(po))
    return int(po.x), int(po.y)
def mouse_click(x=None,y=None):
    if not x is None and not y is None:
        mouse_move(x,y)
        time.sleep(0.05)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
def mouse_dclick(x=None,y=None):
    if not x is None and not y is None:
        mouse_move(x,y)
        time.sleep(0.05)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
def mouse_move(x,y):
    windll.user32.SetCursorPos(x, y)
def key_input(str=‘‘):
    for c in str:
        win32api.keybd_event(VK_CODE[c],0,0,0)
        win32api.keybd_event(VK_CODE[c],0,win32con.KEYEVENTF_KEYUP,0)
        time.sleep(0.01)
 
if __name__ == "__main__":    
    mouse_click(500,280)
    str1 = python
    key_input(str1)
    mouse_click(1000,280)
    

技术分享

当运行test.py时,会模拟在360浏览器的搜索框自动输入python,同时点击搜索按钮开始搜索。

以上是关于如何使用python来模拟鼠标点击(将通过实例自动化模拟在360浏览器中自动搜索"python")的主要内容,如果未能解决你的问题,请参考以下文章

如何在 F# 中模拟鼠标点击和按键

如何通过Autoit来模拟点击网页某个位置

VB如何模拟鼠标点击网页按钮?

利用python模拟鼠标点击自动完成工作,提升你的工作效率!

Python自动操作 GUI 神器——PyAutoGUI

如何模拟鼠标点击和拖动?