如何使用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,同时点击搜索按钮开始搜索。

时间: 2024-10-24 01:27:55

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

WEBBROWSER中模拟鼠标点击(SendMessage/PostMessage)

好久没有写文章,发一篇顶顶博客访问量.别人建议转一些比较好的代码也贴过来,但是我打算这里主要发自己原创的代码,所以么..流量该多少就多少吧... 回到主题,在webbrowser中点击某链接网上几乎都是用document对象模拟点击,这个方法基本能应对一般的情况,但是例如广告联盟的点击XXX就有检测机制(不多解释,你们懂的).所以完全模拟鼠标的点击事件就比较完美.于是我用了最常见的SendMessage. 接下来就要解决一个问题,webbrowser的句柄问题.从控件本身得到的句柄不是真正的浏览

使用powershell/vbs自动化模拟鼠标点击操作

今天想做windows上的自动化,所以才有了模拟鼠标点击的需求,先考虑用powershell实现: 首先先安装一个名为“WASP”免费可用的Powershell扩展程序,下载地址:http://wasp.codeplex.com/ 下载解压之后放到C:\Windows\System32\WindowsPowerShell\v1.0\Modules\下,如图: 之后,在开始->运行处输入powershell,以管理员方式运行, 执行Import-Module WASP,则引入了扩展程序, 假如有个

jQuery模拟鼠标点击事件失效的问题

最近使用jQuery操作浏览器获取数据,需要对分页的信息进行处理,发现直接使用$('div#pager a.next').click();的这种写法无法触发点击事件. 使用trigger('click')的写法也是无济于事. 在网上一顿扒拉后,发现使用$('div#pager a.next')[0].click();就OK了. $('div#pager a.next')[0]这种写法其实就相当于把jQuery对象转换为Dom对象了. 模拟点击不生效的原因 如果使用jQuery的写法:$('a#t

求助:程序如何模拟鼠标点击一个TreeView节点?

void CreateTreeViewControl(HWND hMainWnd) { g_hTreeView = CreateWindow(WC_TREEVIEW, _T("Tree View"), WS_VISIBLE | WS_CHILD | WS_BORDER | TVS_HASLINES | TVS_LINESATROOT, 5, 5, 320, 480, hMainWnd, NULL, hInst, NULL); TVINSERTSTRUCT tvInsertStruct

模拟鼠标点击按钮的简单示例

原理 首先枚举到目标按钮所在程序的窗口,然后在该窗口内枚举控件获取控件的句柄,获取到按钮的句柄后可通过SendMessage或者PostMessage来发送消息模拟鼠标点击按钮等交互方式.但是因为枚举窗口和句柄都是使用WIN32 API,所以只能枚举到WIN32的控件,对于那些不是微软提供的控件则表示无能为力了.本示例简单地模拟一个往打字机里面写入数据,点击确认的方法. 主要代码 HWND hBtnAdd = NULL; HWND hEditAdd = NULL; HWND hEditMain

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

没有什么能比学以致用让学习变得更有动力的了. 不知道大家在工作中有没有一些工作需要重复的点击鼠标,因为会影响到财务统计报表的关系,我们每个月底月初都要修改ERP中的单据日期,单据多的时候光修改就能让你点鼠标点到手麻.(这里要吐槽一下浪沙软件,别的单据都可以批量修改日期,就是这个移仓单不行,你们研发怎么就这么懒?剩下这么点工作就不完成他?)之前同事有跟我提到过键盘精灵,因为当时负责别的工作,一直没有去了解.现在公司人员减少了,这工作又回到我身上了,刚好之前我在学习连连看的时候,知道Python 也

模拟鼠标点击键盘按下

#include <Windows.h> #include <stdlib.h> //打开程序或网页 void open(char *str) { ShellExecuteA(0, "open", str, 0, 0, 1); } //关闭程序 void close() { system("http://taskkill /f /im liebao.exe"); } //模拟键盘按下实现输入 void search() { keybd_eve

QT中模拟鼠标点击事件

传入座标,模拟鼠标点击QWebView中网页上的某一点 qDebug()<<"mouse clicked"; QPoint pos(403,34); QMouseEvent event0(QEvent::MouseButtonPress, pos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); QApplication::sendEvent(view->page(), &event0); QMouseEven

Python模拟鼠标点击——如何正确的肝阴阳师

本来嘛,说好了要写Selenium自动化搜电影的笔记的,然后正好今天上课无聊玩阴阳师开了个SSR,发现还有600体!准备怒刷之,但是又肝不动了.打算尝试用Python写个脚本来代替我自动点击(PC端,安卓模拟器) 大家放心我没写出来 写好在测试的时候,发现一到安卓模拟器就丢失焦点(也可能是点不了),对win32编程完全不熟悉,研究了2,3个小时没解决.又跟一个网易游戏的聚聚聊了会,他用C++写的用得和我一样的方法完成了..... (如果有必要我明天换C++写一下...)但是测试了其他游戏,如腾讯