每个人都有自己鲜明的主张和个性,不要试图去改变他人,同样,也不要被他人所改变。改了,就不是自己了。 ------ 博客首页

RF上传图片各种失败坑,使用pywin32来操作windows窗体

这个上传按钮,使用 Choose File,失败不知道为什么。。。

Name:
Choose File
Source:
Selenium2Library <test library>
Arguments:
[ locator | file_path ]

然后说用AutoItLibrary pip安装报错,下载安装报错(python3.7)坑。

然后说试试 python+selenium来解决,but它会自己新开浏览器。。。。坑  (可以这样开浏览器把图片上传好了再关闭浏览器 再在RF打开浏览器操作,感觉很low)

然后说试试python+pywin32终于成功

 

 1 #coding:utf-8
 2 import os
 3 import win32gui
 4 import win32con
 5 
 6 def upload(fileAddr):
 7 
 8     wndtitle = u"打开"   # 进程名(就是那个窗体名称)
 9     wndclass = '#32770' #这个用SPY++找出来 什么类名
10     wnd = win32gui.FindWindow(wndclass, wndtitle) #获取这个窗体的句柄,不懂什么是句柄 感觉是个id吧
11     print("上传窗口句柄:%s"%wnd)
12 
13     Ind = win32gui.GetDlgItem(wnd,1148) #通过窗体句柄和控件ID,找到输入框的句柄
14     print("输入框句柄:%s"%Ind)
15 
16     win32gui.SendMessage(Ind,win32con.WM_SETTEXT,None,fileAddr) #给这个输入框发送text
17 
18     Bnd = win32gui.GetDlgItem(wnd,1) #取打开按钮的句柄
19     print("打开按钮句柄:%s"%Bnd)
20 
21     win32gui.SendMessage(Bnd,win32con.BM_CLICK,None,None) #点【打开】按钮
 句柄什么鬼:

句柄(handle),有多种意义,其中第一种是指程序设计,第二种是指Windows编程。现在大部分都是指程序设计/程序开发这类。
第一种解释:句柄是一种特殊的智能指针 。当一个应用程序要引用其他系统(如数据库、操作系统)所管理的内存块或对象时,就要使用句柄。
第二种解释:整个Windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类中的不同的实例,
诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息,但是句柄不是指针,程序不能利用句柄来直接阅读文件中的信息。
如果句柄不在I
/O文件中,它是毫无用处的。 句柄是Windows用来标志应用程序中建立的或是使用的唯一整数,Windows大量使用了句柄来标识对象。

 

 


posted @ 2019-02-15 21:30  蠕动的贝塞尔  阅读(942)  评论(1)    收藏  举报