一个简单的、跨平台的面向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如何删除列表中的重复项并将列表复制到另一个列表中   Java如何在非UI应用程序中检测tab键按下?   java无法在未调用Looper的线程内创建处理程序。警报对话框线程上的prepare()   java Jaxb将XML转换为ElementNSImpl类型,而不是正确的类型   基于java标记的过滤实现Firestore   我们可以使用Java和Eclipse使用YouTube分析Api吗?   JavaSpring注释在多个选项卡中同时打开多个视图   java Hibernate不使用JBOSS检索数据   矩阵如何从Apache Commons数学Java库中找到伪逆   对象Java打印“null”作为字符串引用!=使无效   java中的图形慢映射   java用户界面:操作栏和上下文操作栏,新趋势   java Infinispan,版本化操作返回不正确的结果   java调整保存在父JFrame中的JInternalFrame的大小,并且该父JFrame使用ComponentMover API注册   java如何防止会话属性在服务器上持久化?   java如何为SpringBoot 2创建自定义嵌入式servlet容器   使用Robolectric进行单元测试时,在片段类内调用getString()时发生java IllegalStateException