C/S 的标签 label 获取文本出错解决方案

有的同学需要获取 CS 程序中的 label 标签中的文本,如下图:
C/S 的标签 label 获取文本出错解决方案

结果会报这个错:
C/S 的标签 label 获取文本出错解决方案

我们先根据报错提示看一下原代码

def get_text(win_class=None,win_name=None,selector=None,waitfor=WAIT_FOR):
    try:
        automation.SetGlobalSearchTimeOut(waitfor)
        ctrl = get_control(win_class, win_name, selector)        
        ctrl = automation.Control.CreateControlFromControl(ctrl)
        return ctrl.CurrentValue() 
    except Exception as e:
        raise e

结论:7.0 判断了 value,而没有判断 text,所以会产生错误
临时解决方案:替换 get_text() 方法,该问题再 8.0 中已解决,各位同学们放心
替换代码如下:

def get_text(win_class=None,win_name=None,selector=None,return_field='text',waitfor=WAIT_FOR):
    try:
        automation.SetGlobalSearchTimeOut(waitfor)
        ctrl = get_control(win_class, win_name, selector)
        
        ctrl = automation.Control.CreateControlFromControl(ctrl)
        if return_field == 'value':
            return ctrl.AccessibleCurrentValue() 
        else:
            return ctrl.AccessibleCurrentName() 
    except Exception as e:
        raise e   

运行结果:
C/S 的标签 label 获取文本出错解决方案