Python+selenium - 浏览器中遇到弹出系统窗口,如何处理 ?(python+selenium+win32gui)
某些页面在做页面文件上传交互的时候,有的会调出window的系统窗口来导入某些文件,这个时候单纯的用python+selenium已经无法满足这个处理
这个时候可以应用别的库来支援,对于这个我也是第一次遇到,所以记录一下自己整一个体验的过程。
方法一:
工具:为了更好的了解这个window的窗口控件,下载了查看空间的软件:WinSpy-1.0.3.7z
查看窗口的详细情况,便于定位到正确位置
主要的代码:
主要函数的用法:
win32gui.FindWindow 函数:该函数获得一个顶层窗口的句柄,这个函数不查找子窗口。在查找时不区分大小写。
handle=win32gui.FindWindow(class_name,window_title) : class_name:窗口的类,window_title:窗口的标题 。返回结果为当前窗口的句柄信息
win32gui.FindWindowEx函数:该函数获得一个窗口的句柄,这个函数查找子窗口,从排在给定的子窗口后面的下一个子窗口开始
win32gui.FindWindowEx(handle,child,class_name,window_title):
handle:要查找子窗口的父窗口句柄
child:子窗口句柄 ,如果参数为0,查找从顶层窗口的第一个子窗口开始
class_name:类名
window_title:窗口名称
win32gui.SendMessage(handle,Massage,wParam,lParam):
handle :接收信息的窗口句柄
Msg:要发送的消息,这些消息都是windows预先定义好的
wParam:消息的wParam参数
lParam:消息的lParam参数
WM_SETTEXT 消息:设置窗体的文本 ,wParam:未使用,lParam:变量名,窗体文本将被设置为该字符串。
win32api.SendMessage(Mhandle, win32con.WM_COMMAND, 1, confirmBTN_handle) :利用一个WM_COMMAND消息来点击确定按钮
方法二:
工具:https://www.autoitscript.com/site/autoit/downloads/ --下载Download Autolt
--安装完毕
脚本的编辑基本与上面的差不多--通过定位操作相关的功能
--File-Save as
--直接在脚本编辑窗口运行 Tools-Go(F5)
--编译为可执行文件.exe
--生成的exe ,直接双击可运行,或者是python调用
如:
import os
os.system("E:\test.exe")