python3+selenium3+IE自动化遇IE11下载弹窗遇阻

近期一直使用python3结合selenium驱动IE11进行单位内联网上的应用系统,做些自动化数据下载,数据清理,整合后重新传回服务器的工作。

在自动化下载中,可以对网页上的"保存"按钮模拟click()触发下载动作,但该"保存“按钮是无法通过另存为下载。此时IE浏览器弹出”要打开或保存来自xxx站点的xxx文件吗?打开(O)保存(S)取消©"的弹窗,等待手工交互操作。如果是Firefox,Chrome浏览器下载保存均可预设1次后,不再每次提示,自动化进程不会被打断。偏偏这个IE下载弹窗是window系统级别的窗口,在自动触发下载前,用win32API还获取不到该下载提示窗的句柄,触发后由于停在提示上,不进行手点鼠标或手工按ALT+S,程序就执行不下去。试用AutoIt写脚本,在外围等候该弹窗出现,通过爬取其class类型DirectUIHWND及Instance值,并模拟发送ALT+S,完全可以使下载完成。然后自动化程序切换向原操作网页,应该能继续运行。但将AutoIt脚本编泽成DL.exe文件后,加入自动化程序"下载按钮".click()后面os.system(‘DL.exe’),完全运行不到这句话。后来用Autoit写了脚本代码编译成DL.exe先运行在操作系统下,一直等侍IE这个下载弹窗出现,倒也暂时解决了。可一直想写入自动化主程序中,因为外挂总是耗资源。还在想进一步解决的更好办法。
分析原因应该是自动运行时,下载弹窗出现与主程序是二个进程,如何让它串行运行?还没想出办法。目前在考虑的原因有:回调函数、双进程、不得而解!不知哪位大侠处理过。几乎查遍了CSDN,所言均与我的应用不同!探求中…有网友提示用subprocess.run()运行,目前没能实践。
DirectUIHWND 是微软用在一种不公开的编程方法。在没有解决前改用chrome浏览器代替IE。现在算是知道为什么IE微软自己也决定不用了。

你可能感兴趣的:(python3+selenium3+IE自动化遇IE11下载弹窗遇阻)