程序调用chrome遇到的问题

场景:采用Java+AutoIt3+EditThisCookie自动获取cookie,实现应用程序的自动登录。

AutoIt3脚本操作Chrome浏览器.模拟人工操作.利用EditThisCookie插件保存cookies文件.由java程序使用.
脚本编译成exe文件.设为a.exe.由java程序调用.

Java程序在检测到访问失败需要重新登录后调用a.exe.等a.exe执行结束后再尝试利用cookie进行登录。

方案1:

。Java程序启动a.exe
。a.exe先关闭所有Chrome进程,然后利用shellExecute启动Chrome,返回进程id,等待打开窗口(按窗口类查找)
。在预期的Chorme窗口地址栏模拟输入url,然后一系列操作,最后利用EditThisCookie导出cookie到剪裁板,由程序保存到指定的目录
。a.exe关闭打开的进程.


测试结果:
直接运行a.exe没有问题。. 
但java启动a.exe,a.exe中启动Chrome.exe.运行过程中,资源管理器中有一个Chrome.exe短暂出现,然后消失。没有chrome窗口出现。

用Notepad.exe替换Chrome.exe,可以打开。
--问题应该和Chrome有关。

方案2:
。Java启动Chrome,获取进程id,传递给a.exe
。a.exe根据pid查找窗口,激活窗口,然后模拟操作

测试结果是:
a.exe根据pid找不到窗口。用Notepad.exe则可以。

启动Chrome.exe,结果启动了10个Chrome.exe进程.有一个窗口.
用参数--single-process启动Chrome,启动了2个Chrome进程, 没有窗口打开.

方案3:
最后实际采用的方法:
。Java启动Chrome
。此时新开启的Chrome是活动窗口,a.exe直接模拟操作
。a.exe结束后,Java关闭所有Chrome.exe(taskkill).

猜你喜欢

转载自blog.csdn.net/wherwh/article/details/84595456