zoukankan      html  css  js  c++  java
  • pywinauto如何获取gridwindow控件的屏幕位置

    一:问题描述

    问题一:通过查找pywinauto在线文档,其中没有讲解到gridwindow控件的方法,我不知道这个控件是不是标准控件,还是pywinauto根本就没适配这个控件。从网上查询了好多资料,这类资料是相当的少啊。有一个项目要对这个控件进行操作,要统计这个控件的个数,还要进行控件的右键保存功能。

    问题二:这类控件由于没有相关的API方法,无法获取这个gridwindow控件的行信息,列信息及表头信息。

    二:解决方案

    问题一:通过不断的尝试新方法,虽然这个控件没有API方法,但是这个控件可以通过print_control_identifers()方法打印出来这个控件的屏幕坐标信息,通过从控制台获取打印的信息,并进行处理得到该控件的坐标信息,通过坐标值可以用相对坐标来操作此类控件,具体实现可以看下面的代码:

    #获取控制台打印的东西
    class TextArea(object):
            def __init__(self):
                    self.buffer = []
            def write(self, *args, **kwargs):
                    self.buffer.append(args)
    
    #连接工具
    app = application.Application()
    app.connect_(path = '工具路径')
    time.sleep(2)
    app = app.top_window_()
    time.sleep(2)
    
    stdout = sys.stdout
    sys.stdout = TextArea()  #申请的空间
    app.print_control_identifiers() #打印控件信息
    text_area, sys.stdout = sys.stdout, stdout #获取控件信息
    print text_area.buffer
    
    gridlist = []
    for tup in text_area.buffer:
            i = tup[0].find('要查找的控件')
            if i > -1:
    
                    locate = []  #用于存控件的坐标
                    grid = tup[0][tup[0].find('(')+1:tup[0].find(')')].split(',')
                    for gridi in grid:
                            gridj = gridi.strip()
                            gridk = int(gridj[1:])
                            locate.append(gridk)
                           
                    gridlist.append(locate)
    

     问题二:这个问题困扰了好久,从网上查了好多资料,还是没能解决这个问题。

  • 相关阅读:
    GPS坐标转化距离(短距离模型公式)
    jquery ajax 同步异步的执行
    视频播放的基本原理
    [css或js控制图片自适应]
    asp.net中js和jquery调用ashx的不同方法分享,需要的朋友可以参考一下
    [转载]在网页中插入media,RealPlayer等控件
    数组的几种排序算法的实现(3)
    -- HTML标记大全参考手册[推荐]
    数组的几种排序算法的实现(2)
    数组的几种排序算法的实现(1)
  • 原文地址:https://www.cnblogs.com/ybcao/p/5463030.html
Copyright © 2011-2022 走看看