如何处理一些控件无法设置的【下拉框技巧】

适用版本:RPA 5.0
注:其他版本需要稍作修改才能使用。

如果碰到 Select 选择无法设置的下拉框。

如何处理一些控件无法设置的【下拉框技巧】

我们可以有以下两种处理办法:

第一种办法:

看【获取文本】能不能获取,如果能获取下拉框里的内容,那恭喜你有救了。

第一步:获取文本

第二步:与现有的数据源做对比(如果获取的文本有后面有空格或者特殊字符,则需要特殊处理一下)

第三步:如果比对成功则退出循环。

第四步:如果向下比对不成功则继续向上匹配。

第五步:如果始终都匹配不成功则超时退出。

代码如下:

import time
import ubpa.ics as ics

'''
对比数据源和获取文本得到的值
如果对比成功则打印成功退出循环
否则继续按向下键继续对比
'''

def choice_drop_down(win_title1 = None,control1,select_str):
    try:
        waitfor = 10
        starttime = time.time()         
        while True:
            txt = ''
            strlen = len(select_str)                         #记录数据源的长度
            try:
                txt = ics.control_get_text_cs(win_title = win_title1,control = control1)
            except Exception as e:
                print (e)
            if (txt[:strlen].lower() == select_str[:strlen].lower()):       #对比数据源和获取文本得到的值
                print('Choise Success:' + select_str)                       #对比成功则打印成功
                break
            else:
                runtime = time.time() - starttime                           #计算时间防止对比不成功导致死循环
                if runtime >= waitfor:                                          
                    raise Exception('选择超市,未选中')
                time.sleep(0.02)
            ics.control_send_cs(win_title = win_title1,control=control1,text = '{DOWN}')    #对比不成功则继续向此文本框发送向下键
    except Exception as e:
        raise e

PS:为了大家着想。(需要的同学手动敲一遍加深记忆😄)

第二种办法:

如果获取文本无法获取,则可以把上面的获取文本换成 CTRL+C,用设计器的【从剪切板获取】功能,把数据获取出来做成变量来进行对比,根据现场环境按【向下键】或【向右键】等。

作业:
1、 有幸用到此功能的同学可以尝试一下向下键到底后再向上读取,因有些环境不一定初始位置就是第一个。