既然pyobjc能够使用cocoa提供的这么多库函数,那对我们有没有一些实际的作用呢?联想到在自动化测试中,appscript有些操作目前还是无法实现的,例如:
无法实现点击屏幕任意坐标(appscript中未找到类似的api)
无法双击某个控件(通过appscript两次调用控件的click方法是不生效的)
无法实现控件上右键……
现在,这些appscript无法完成的操作,通过pyobjc又找到了另一条实现的途径,我们可以借助pyobjc,来构造并触发我们需要的鼠标事件,cocoa的 CoreGraphics库中就包含了构造所有鼠标事件的方法,在苹果开发者网站上了解了这些函数的使用方式后,实现一个fakemouse,能否完成的操作有:点击屏幕任意坐标、在任意坐标双击、在任意坐标鼠标右键、移动鼠标至某个坐标、鼠标拖拽等。具体实现代码如下:
#!/usr/bin/python ''''' Created on 2013-8-30 @author: maricoliu ''' import sys import time from Quartz.CoreGraphics import * def _mouseEvent(type, posx, posy): theEvent = CGEventCreateMouseEvent(None, type, (posx,posy), kCGMouseButtonLeft) CGEventPost(kCGHIDEventTap, theEvent) def mouseMove(posx, posy): _mouseEvent(kCGEventMouseMoved, posx, posy) def mouseClickDown(posx, posy): _mouseEvent(kCGEventLeftMouseDown, posx, posy) def mouseClickUp(posx, posy): _mouseEvent(kCGEventLeftMouseUp, posx, posy) def mouseDrag(posx, posy): _mouseEvent(kCGEventLeftMouseDragged, posx, posy) def mouseClick(posx, posy): '''''perform a left click''' _mouseEvent(kCGEventLeftMouseDown, posx, posy) _mouseEvent(kCGEventLeftMouseUp, posx, posy) def mouseRightClick(posx, posy): theEvent = CGEventCreateMouseEvent(None, kCGEventRightMouseDown, (posx,posy), kCGMouseButtonRight) CGEventPost(kCGHIDEventTap, theEvent) theEvent2 = CGEventCreateMouseEvent(None, kCGEventRightMouseUp, (posx,posy), kCGMouseButtonRight) CGEventPost(kCGHIDEventTap, theEvent2) def mouseDoubleClick(posx, posy): '''''perfrom a double left click''' theEvent = CGEventCreateMouseEvent(None, kCGEventLeftMouseDown, (posx,posy), kCGMouseButtonLeft); CGEventPost(kCGHIDEventTap, theEvent); CGEventSetType(theEvent, kCGEventLeftMouseUp); CGEventPost(kCGHIDEventTap, theEvent); CGEventSetIntegerValueField(theEvent, kCGMouseEventClickState, 2); CGEventSetType(theEvent, kCGEventLeftMouseDown); CGEventPost(kCGHIDEventTap, theEvent); CGEventSetType(theEvent, kCGEventLeftMouseUp); CGEventPost(kCGHIDEventTap, theEvent); def mouseScroll(movement=30, direction=1): ''''' @param movement: lines to scroll, Integer @param direction: scroll up or scroll down, 1:scroll up, -1:scroll down ''' for i in range(movement): theEvent = CGEventCreateScrollWheelEvent(None, kCGScrollEventUnitLine, 1, direction) CGEventPost(kCGHIDEventTap, theEvent) time.sleep(0.02) #CGPostScrollWheelEvent(1, 5) if __name__ == '__main__': ourEvent = CGEventCreate(None); currentpos=CGEventGetLocation(ourEvent); # Save current mouse position time.sleep(1); for i in range(20): mouseScroll(40, 1) mouseScroll(40, -1) # mouseclick(1610, 215) # mousedoubleclick(1697, 561) time.sleep(1); #mouseMove(int(currentpos.x),int(currentpos.y)); # Restore mouse position
相关推荐
在Mac OS X中,AppleScript可以用来模拟键盘和鼠标事件,而`pyobjc`库则为Python提供了与AppleScript的接口。另外,`pyautogui`同样支持Mac OS X平台。 除了编程语言的库之外,还有一些专门的工具,如AutoHotkey...
《Python库pyobjc-framework-PhotosUI深度解析》 在Python的世界里,丰富的库资源是其强大功能的重要支撑。本文将深入探讨一个特定的Python库——`pyobjc-framework-PhotosUI`,版本为5.1.2。这个库是Python与...
标题中的"PyPI 官网下载 | pyobjc-framework-PhotosUI-6.0.1.tar.gz"表明这是一个从Python Package Index(PyPI)官方下载的软件包,名为`pyobjc-framework-PhotosUI-6.0.1.tar.gz`。PyPI是Python开发者发布和分享...
滚轮信息通常由`BTN Middle`或`BTN Side`事件表示,这些事件代表鼠标中键或侧键,一般出现在滚轮鼠标上。 ```bash ls /dev/input/by-id | grep -i mouse ``` 如果返回结果非空,说明至少有一个鼠标设备连接。 对于...
Pyobjc-framework-Cocoa这个库使得Python开发者能够利用Cocoa的全部功能,如创建GUI应用程序、实现多线程、处理图形、音频和视频,以及访问系统服务等。通过Python的简洁语法和强大的生态系统,Pyobjc为Apple平台的...
**PyPI 官网下载 | pyobjc_framework_CloudKit-8.0-py2.py3-none-any.whl** PyPI(Python Package Index)是Python开发者最常用的一个资源库,它提供了大量的第三方Python软件包,方便用户下载和安装。在Python生态...
资源分类:Python库 所属语言:Python 资源全名:pyobjc-framework-SpriteKit-8.4.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
3. **事件驱动编程**:通过`pyobjc_core`,Python可以集成到Cocoa事件模型中,处理用户界面事件,如鼠标点击、键盘输入等。 4. **系统集成**:可以使用`pyobjc_core`与Apple的系统服务进行交互,如访问硬件信息、...
2. **事件处理**:使用pyobjc,Python开发者可以处理Cocoa事件,如窗口关闭、按钮点击等,实现与用户的交互。 3. **Foundation框架**:pyobjc也支持访问Foundation框架,这是一组基本的面向对象的工具,包括数据...
5. 实现事件监听,例如索引更新或者查询完成事件,以进行相应的处理。 **应用场景** `pyobjc-framework-SearchKit-2.4`适用于需要在macOS平台进行全文搜索的应用,比如: 1. 内容管理系统:在大量文档中快速查找...
总的来说,`pyobjc_framework_PubSub`为Python开发者提供了一个强大的工具,让他们能够在macOS环境下利用PubSub框架的能力,实现高效、灵活的事件管理和进程通信。通过深入理解和实践,开发者可以构建出更加健壮和...
在“pyobjc-framework-AppleScriptObjC”中,这个功能被扩展到了AppleScriptObjC框架,让Python开发者能够利用AppleScriptObjC的能力,例如控制Mac上的应用程序或与Apple事件模型交互。 在分布式系统领域,如...
Pyobjc是一个强大的Python绑定工具,它允许Python程序直接调用Objective-C的API,从而充分利用Mac OS X(现为macOS)系统丰富的功能。在这个特定的版本8.0b1中,Pyobjc集成了Automator框架,使得Python开发者能够...
标题 "pyobjc-tc.rar_Different" 暗示了这是一个关于 Python 和 Objective-C 集成的项目,其中可能涉及到不同的结构或方法。描述 "Check different structures" 提醒我们,这个压缩包的内容可能包括对多种数据结构...
资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:pyobjc_core-5.0b1-cp37-cp37m-macosx_10_6_intel.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
Pyobjc-framework-AppleScriptKit的核心功能在于,它允许Python代码直接执行AppleScript命令,或者创建、管理Apple事件。这对于那些需要在Mac环境下自动化任务、控制其他应用程序的开发者来说,无疑是一个强大的工具...
今天我们将聚焦于一个特定的库——pyobjc_core,它为Python开发者提供了与Apple的Objective-C运行时交互的能力,从而使得Python可以在Mac OS X和iOS系统上无缝地访问和利用Cocoa框架以及其他Objective-C原生功能。...
《PyPI与Pyobjc-framework-Message-5.1:Python在Mac OS X中的Objective-C桥接》 PyPI,全称Python Package Index,是Python开发者的重要资源库,它提供了大量可重复使用的Python软件包,方便用户下载和安装。在...
标题中的"PyPI 官网下载 | pyobjc-framework-PreferencePanes-8.1.tar.gz"指的是Python Package Index(PyPI)上的一个软件包,名为`pyobjc-framework-PreferencePanes`,版本为8.1,它被打包成一个tar.gz格式的压缩...