我看到您在知道上提过这个问题:Python+Selenium处理Windows弹窗(非IE弹窗问题),不知道最后怎么解决的?

 我来答
Realazas
2015-02-28
知道答主
回答量:36
采纳率:0%
帮助的人:8万
展开全部

场景:




思路:

查找到这个Open窗口,然后在File Name里面填入文件路径,最后点击Open按钮结束操作。


#首先下载好spy++这个工具(微软自己出的用来定位windows句柄及其父子关系的)

#先把弹出框点出来,然后打开spy++,点击图中的1处,就会出现查找窗口,点击2处,把“瞄准

#镜”拖动到弹出窗口的边缘(不要拖到其他地方,比如按钮,编辑框等,不然会查找到其他句柄)

#记住这个最底层的class:#32770(可以称为祖爷爷)

import win32gui

hn=win32gui.FindWindow(None,'Open')
win32gui.ShowWindow(hn,win32con.SW_SHOWNORMAL)


#查找目标控件

#实际上最终的目标是要定位第二章图中的Edit这个输入控件,所以,同样的方法,查找到这个

#Edit控件,记住Class:Edit(可以称为曾...孙子)


#剩下的就是查找祖爷爷和曾...孙子之间存在哪些父和子

#在spy++中找到父子关系如3图所示

#下面就是写代码了

parent=win32gui.FindWindowEx(hn,None,'ComboBoxEx32',None)
Combobox_real=win32gui.FindWindowEx(parent,None,'ComboBox',None)
Edit_box=win32gui.FindWindowEx(Combobox_real,None,'Edit',None)
print hex(Edit_box)
win32gui.EnableWindow(Edit_box,True)

#剩下的就简单了,直接填入路径,最后点Open按钮


win32gui.SendMessage(Edit_box,win32con.WM_SETTEXT,None,'C:\Users\Public\Pictures\Sample Pictures\Penguins.jpg')
open_button=win32gui.FindWindowEx(hn,None,'Button','&Open')
print hex(open_button)
(left,top,right,bottom)=win32gui.GetWindowRect(open_button)
print (left,top,right,bottom)
win32api.SetCursorPos((left+(right-left)/2,top+(bottom-top)/2))
time.sleep(0.5)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0) 
time.sleep(0.05)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0)



有问题再找我

来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式