pywinauto客户端自动化---窗口进行截图(代码片段)

qican qican     2022-12-05     550

关键词:

  做自动化过程中时长会遇到一些截图操作,那么在做客户端的时候,应该怎么进行截图呢?

窗口截图

在pywinauto中存在自带的截图函数 capture_as_image() 

源码:

def capture_as_image(self, rect=None):
        """
        Return a PIL image of the control.

        See PIL documentation to know what you can do with the resulting
        image.
        """
        control_rectangle = self.rectangle()
        if not (control_rectangle.width() and control_rectangle.height()):
            return None

        # PIL is optional so check first
        if not ImageGrab:
            print("PIL does not seem to be installed. "
                  "PIL is required for capture_as_image")
            self.actions.log("PIL does not seem to be installed. "
                             "PIL is required for capture_as_image")
            return None

        if rect:
            control_rectangle = rect

        # get the control rectangle in a way that PIL likes it
        width = control_rectangle.width()
        height = control_rectangle.height()
        left = control_rectangle.left
        right = control_rectangle.right
        top = control_rectangle.top
        bottom = control_rectangle.bottom
        box = (left, top, right, bottom)

        # check the number of monitors connected
        if (sys.platform == win32) and (len(win32api.EnumDisplayMonitors()) > 1):
                hwin = win32gui.GetDesktopWindow()
                hwindc = win32gui.GetWindowDC(hwin)
                srcdc = win32ui.CreateDCFromHandle(hwindc)
                memdc = srcdc.CreateCompatibleDC()
                bmp = win32ui.CreateBitmap()
                bmp.CreateCompatibleBitmap(srcdc, width, height)
                memdc.SelectObject(bmp)
                memdc.BitBlt((0, 0), (width, height), srcdc, (left, top), win32con.SRCCOPY)

                bmpinfo = bmp.GetInfo()
                bmpstr = bmp.GetBitmapBits(True)
                pil_img_obj = Image.frombuffer(RGB,
                                               (bmpinfo[bmWidth], bmpinfo[bmHeight]),
                                               bmpstr,
                                               raw,
                                               BGRX,
                                               0,
                                               1)
        else:
            # grab the image and get raw data as a string
            pil_img_obj = ImageGrab.grab(box)

        return pil_img_obj

实战

上面的操作方法已经了解了,我们实战进行操作,看看进行如何截图,这里我们截图后,要进行保存,可以根据路径保存或者直接保存在当前目录

# coding:utf-8
from pywinauto import Application

# 打开记事本
app = Application().start(rC:WindowsSystem32
otepad.exe)
win = app[无标题 - 记事本]
# 截图进行保存
a = win.capture_as_image().save(123.png)

技术图片

 

python实现超快窗口截图,自动获取当前活动窗口并展示截图

实现思路是先获取到当前最上面活动的窗口信息,然后提取该窗口的名称信息。【阅读全文】之后获取窗口的坐标信息,即左上角的开始坐标及右下角的结束坐标。最后直接截图并将截图的图片进行展示。其中用到了两个第三方... 查看详情

pywinauto桌面应用自动化01--安装和启动(代码片段)

目录一、安装Pywinauto二、定位元素的工具三、启动和连接应用程序1、启动应用程序2、连接已经打开的应用程序1)通过进程号连接2)通过窗口句柄连接一、安装Pywinautopipinstallpywinauto官方文档:Whatispywinauto—pywinauto0.6.... 查看详情

win32gui 选择两个同名窗口

...【发布时间】:2019-02-0108:34:54【问题描述】:我正在使用pywinauto创建python代码,以自动化将两个Minecraft客户端设置为分屏的过程。准备好之后,最后一步是将Minecraft的一个实例设置为0x0x1920x540,另一个设置为0x540x1920x540。但是因... 查看详情

使用 pywinauto 获取窗口参数(上、下、右、左)

】使用pywinauto获取窗口参数(上、下、右、左)【英文标题】:Gettingwindowparameterswithpywinauto(Top,Bottom,Right,Left)【发布时间】:2016-10-1110:25:35【问题描述】:使用pywinauto(Top,Bottom,Right,Left)获取窗口参数我已经设法使用以下sn-p获取这... 查看详情

windowsgui程序自动化之pywinauto

WindowsGUI程序自动化之pywinauto一.pywinauto的安装与配置  官方英文版文档网址:https://pywinauto.readthedocs.io/en/latest/index.html  >>>>>>待续   查看详情

pywinauto - 动态控制总是列在 print_control_identifiers()

】pywinauto-动态控制总是列在print_control_identifiers()【英文标题】:pywinauto-dynamiccontrolalwayslistedinprint_control_identifiers()【发布时间】:2020-10-2909:21:20【问题描述】:我正在尝试自动化连接和断开Internet的程序。因此,在一个窗口中,... 查看详情

自动截取程序窗口的屏幕截图

...始将手册翻译成多种语言,截图数量增加了十倍。我们想自动化这个过程。将有一个录制的宏 查看详情

7窗口截图验证码处理(代码片段)

...验证码处理1截图把当前操作页面的截图保存到指定位置自动化脚本是由程序去执行的,因此有时候打印的错误信息并不是十分明确。如果在执行出错的时候对当前窗口截图保存,那么通过图片就可以非常直观地看到出错的原因... 查看详情

pywinauto处理ui自动化

pywinauto处理UI自动化Python的pywinauto模块来处理Windows控件的UI操作。 1.首先搭建pywinauto环境。 1).可以参考vncdotool-AcommandlineVNCclient安装python2.7.5,Twisted和PIL。 2).安装elementtree(elementtree-1.2.7-20070827-preview.win32.exe)和ctype... 查看详情

selenium2自动化测试实战23(窗口截图)

一、窗口截图 WebDriver提供了截图函数get_screenshot_as_file()来截取当前窗口。#-*-coding:utf-8-*-fromseleniumimportwebdriverfromtimeimportsleepfromselenium.webdriver.common.keysimportKeysdriver=webdriver.Chrome()driver.get("http://www.baidu.com")driver.find_element_by_id(‘k... 查看详情

窗口截图(代码片段)

自动化用例是由程序去执行的,因此有时候打印的错误信息并不十分明确。如果在脚本执行出错的时候能对当前窗口截图保存,那么通过图片就可以非常直观地看出出错的原因。WebDriver提供了截图函数get_screenshot_as_file()来截取当... 查看详情

电脑怎么窗口截屏

...保存在此电脑—图片—屏幕截图里。4.Alt+Prtsc:对打开的窗口进行截图,Ctrl+V粘贴,无法直接编辑修改。如我在桌面打开了文件资源管理器,按下Alt+Prt即可对资源管理器界面窗口进行截图。 二、Win10自带截图软件1.WindowsInka.... 查看详情

用pywinauto实现qt自动化(代码片段)

我试图使用pywinauto自动化一个QT应用程序,问题是pywinauto似乎无法点击或选择大多数对象,当它这样做,他们似乎是完全随机的那些我指定。即使使用诸如"点击输入"正确执行,但项目从未被实际点击。Pywinauto显然能够识别我试... 查看详情

带有视频的窗口截图

】带有视频的窗口截图【英文标题】:Screenshotofwindowwithvideo【发布时间】:2019-02-0813:10:32【问题描述】:在我的应用程序中,我使用MediaFoundation来渲染来自网络摄像头的视频。带有视频的窗口是应用程序窗口的一部分,我想以编... 查看详情

聊聊pc端自动化最佳方案-pywinauto(代码片段)

...化最佳方案-WinAppDriver有小伙伴后台给我留言,说「 pywinauto」作为WinAppD 查看详情

python自动化框架:pywinauto实现博客之星自动化评论(代码片段)

...而复始。今天咱不讲爬虫,讲python的自动化测试框架pywinauto如何实现模拟手动操作(相同的还有pyAutoGui这个库),制造一个有血有肉的回复机器,爬虫的方式太暴力了,除了反爬外,还会给官方带来大... 查看详情

pc端应用程序自动化测试——pywinautopywin32pyautogui(代码片段)

1前言PC端自动化测试使用到的python模块主要有pywinauto、win32gui、pyautogui,主要功能如下:pywinauto:主要使用到Application类,用于应用程序管理(打开与关闭应用等)、窗口管理(最小化、最大化、关闭窗口)pywin32:包含win32gui、wi... 查看详情

pywinauto基础02--窗体操作(代码片段)

...该窗口或其子窗口window=app['test001.txt-记事本']frompywinauto.applicationimportApplication#通过窗口句柄连接已经启动的记事本程序,记事本的窗口句柄NativeWindowHandle为2564730handle=2564730app=Application(backend='uia').connect... 查看详情