一个简单的、跨平台的面向python的gui自动化库。

autop的Python项目详细描述


Travis Build StatusAppveyor Build Status

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()

Cross platform alerts

教程

控制鼠标

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()

Demonstration video

使用位图

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Android HttpClient cookies   如何使用Java在远程系统上运行SSH命令?   java从字符串数组中的字符串末尾删除“,”   在One plus 3t手机上,当应用程序被终止或从最近的应用程序中刷出时,java Android FCM推送通知不起作用   java如何使垂直滚动条始终位于jtable的末尾   在java中解析迄今为止“未知”的字符串   javascript在Java中获取Nashorn JsonObject   java windows 10和ubuntu可以使用相同的JDK吗?   java在不同的文件中记录不同的日志。但所有日志都放在同一个文件中   具有特定jdk的java Gradle构建项目   xml Java web服务生成错误响应   javascript Jaggery文件更改不显示   java输出二进制搜索树数组   将BufferedReader解析为JSON对象时,java在位置处意外标记文件结尾