Python微信订餐小程序课程视频
https://edu.csdn.net/course/detail/36074
Python实战量化交易理财系统
https://edu.csdn.net/course/detail/35475
接上一篇博文python办公自动化系列之金蝶K3自动登录(一),我们接着聊聊利用python脚本实现金蝶K3 Wise客户端自动登录这一需求。
如上图所示,自动选择【组织机构】后,我们还需要驱动【当前账套】、【命名用户身份登录】、【用户名】、【密码】、【确定】这几个控件,才算是完成了K3 UI自动化的第一步:自动登录。
一、设置【当前账套】控件
【当前账套】Label右边对应的同样是一个ThunderRT6ComboBox 类,我们选择comboBox某个下拉项时,只有基于索引Index,但是由于集团公司随着业务不断变化,账套数可能存在变化,每个公司账套对应的索引值也会变化。因此,我们最好想办法实现基于账套名称来实现驱动某个comboBox控件。比较通俗易懂的做法是,我们先设法拿到这个组件的所有listItem,将每个Item对应的value(文本值)和listIndex(索引)存入一个字典,那么当用户端随便抛给我们一个账套名时,我们便能基于该字典迅速知道listIndex,再基于它来选择这个comboBox控件。这里面涉及到comboBox一些属性和方法的应用,具体示例代码如下:
1 import win32gui,win32con
2 def getAccountDic(currentAccountHwnd):
3 '''根据【当前账套】的句柄,得到该comboBox所有下拉选项,将选项值ItemText和对应的ItemIndex存入字典 accountDic,最终返回'''
4 accountDic={}
5 accountCnt=win32gui.SendMessage(currentAccountHwnd, win32con.CB\_GETCOUNT, 0, 0)
6 for i in range(accountCnt):
7 textLen= win32gui.SendMessage(currentAccountHwnd, win32con.CB\_GETLBTEXTLEN, i,0)*2 # 创建一个比combobox 文本长度两倍的buffer,确保数据都能存进去
8 buffer = win32gui.PyMakeBuffer(textLen)
9 win32gui.SendMessage(currentAccountHwnd, win32con.CB\_GETLBTEXT, i, buffer)
10 address,length=win32gui.PyGetBufferAddressAndLen(buffer[:-1])
11 length=int((length+1)/2)
12 itemText=win32gui.PyGetString(address,length).strip() # 从内存中取出combobox的当前项内容
13 accountDic[itemText]=i
14 retur