一个简单的、跨平台的面向python的gui自动化库。
autop的Python项目详细描述
Autopy简介和教程
简介
autopy是一个用于python的简单的跨平台gui自动化库。它 包括控制键盘和鼠标、查找颜色和 屏幕上的位图,并显示警报。
当前在MacOS、Windows和带有XTest扩展名的X11上受支持。
开始
要求
- Python2.7或Python3.5及更高版本。
- Rust 1.23.0-Nightly 2019-02-06或更高版本(除非使用双轮驱动 分发)。
- MacOS 10.6及以上。
- Windows 7及更高版本。
- 带有xtest扩展名的x11。
安装
首先,通过运行以下命令查看您的计算机是否有二进制车轮:
$ pip install -U autopy
如果失败,请安装rustup,然后运行:
$ rustup default nightly
$ pip install -U setuptools-rust
$ pip install -U autopy
另一种选择是从github存储库的最新源代码编译:
$ git clone git://github.com/autopilot-rs/autopy-rs.git
$ cd autopy
$ rustup default nightly
$ pip install -r requirements.txt
$ python setup.py build
# python setup.py install
有关在Windows上从源安装的其他说明,请参见here。
你好世界
以下是autopy中“hello world”脚本的源代码。运行此 代码将在每个主要平台上显示警报对话框:
importautopydefhello_world():autopy.alert.alert("Hello, world")hello_world()
教程
控制鼠标
autopy包含许多控制鼠标的功能。全部 列表,参考API Reference。例如。, 要立即将鼠标“传送”到屏幕左上角:
>>> import autopy
>>> autopy.mouse.move(1, 1)
要更实际地移动鼠标,我们可以使用:
>>> import autopy
>>> autopy.mouse.smooth_move(1, 1)
更好的是,我们可以编写自己的函数来将鼠标移动到屏幕上 正弦波:
importautopyimportmathimporttimeimportrandomimportsysTWO_PI=math.pi*2.0defsine_mouse_wave():""" Moves the mouse in a sine wave from the left edge of the screen to the right. """width,height=autopy.screen.size()height/=2height-=10# Stay in the screen bounds.forxinrange(int(width)):y=int(height*math.sin((TWO_PI*x)/width)+height)autopy.mouse.move(x,y)time.sleep(random.uniform(0.001,0.003))sine_mouse_wave()
使用位图
autopy的所有位图例程都可以在模块autopy.bitmap
中找到。一个
探索autopy的有用方法是使用python的内置help()
函数
help(autopy.bitmap.Bitmap)
中的示例。自动验尸的功能记录在
描述性的docstring,因此这应该显示一个很好的概述。
>>> import autopy
>>> autopy.bitmap.capture_screen()
<Bitmap object at 0x12278>
这将截取主屏幕的屏幕快照,将其复制到位图中,显示 内存地址,然后立即销毁它。我们再做点什么 有用,例如查看其像素数据:
>>> import autopy
>>> autopy.bitmap.capture_screen().get_color(1, 1)
15921906
autopy使用一个坐标系,其原点从左上角开始,因此
这将返回屏幕左上角像素的颜色。这个
显示的数字看起来有点不可识别,但我们可以用python的
内置hex
功能:
>>> import autopy
>>> hex(autopy.bitmap.capture_screen().get_color(1, 1))
'0xF2F2F2'
或者,我们可以使用:
>>> import autopy
>>> autopy.color.hex_to_rgb(autopy.screen.get_color(1, 1))
(242, 242, 242)
将该十六进制值转换为(r, g, b)
值的元组。(注意
autopy.screen.get_color()
,在这里使用,只是更方便和
autopy.bitmap.capture_screen().get_color()
的有效版本。
要将屏幕截图保存到文件中,我们可以使用:
>>> import autopy
>>> autopy.bitmap.capture_screen().save('screengrab.png')
文件类型可以从文件名自动解析,也可以作为 可选参数。目前只支持jpeg和png文件。
>>> import autopy
>>> autopy.bitmap.Bitmap.open('needle.png')
<Bitmap object at 0x1001d5378>
除了分析位图的像素数据外,加载位图的主要用途是 在屏幕上或其他位图中查找。例如,下面 打印位图中找到的第一个图像的坐标(从左侧扫描 向右,从上到下):
importautopydeffind_image_example():needle=autopy.bitmap.Bitmap.open('needle.png')haystack=autopy.bitmap.Bitmap.open('haystack.png')pos=haystack.find_bitmap(needle)ifpos:print("Found needle at: %s"%str(pos))find_image_example()
使用autopy的项目
- AutoPyDriverServer,尸检 通过webdriver或与webdriver兼容的服务器。
- guibot,一个使用 各种电脑视觉和桌面控制后端。
- spynner,程序化web浏览 支持ajax的python模块。
- SUMO,一个开源的,高度可移植的, 设计用于处理微观和连续道路交通仿真包 大型公路网。
API参考
希望你喜欢使用尸检!有关更深入的概述,请参见API Reference。
有关详细信息,请参见GitHub Repository。