欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 【利用Selenium+autoIt实现文件上传】

【利用Selenium+autoIt实现文件上传】

2024/11/30 12:47:37 来源:https://blog.csdn.net/lingfeian/article/details/140465904  浏览:    关键词:【利用Selenium+autoIt实现文件上传】

利用Selenium+autoIt实现文件上传

  • 利用Selenium+autoIT实现文件上传
    • autoIt脚本制作
    • 转换成exe文件
    • java代码运行部分

利用Selenium+autoIT实现文件上传

当你看到这篇文章时,证明你遇到了和我一样的难题。正常情况下我们利用selenium完全可以实现表单的提交和文件上传等操作。但当你遇到了反扒设计比较厉害,整个表单都不是常规的input的时候,selenium就有点抓瞎了。
我要实现的需求是在某个官网做表单自动提交,在文件上传的时候发现对方网站根本不能像往常一样在value属性添加文件路径就OK,完全是一个动态的js去编辑,鼠标焦点一移开,立马就删除了。当时我真的很崩溃,没办法,我只能考虑其他的方案去处理,Selenium没办法监控到点击上传弹出来的文件上传框信息,我在网上查了很多资料,最终决定使用autoIt这个中间件来实现文件上传。
主要思路是:
selenium点击上传弹框,休眠一定时间后调用autoIT脚本上传文件,当然要有重试机制,这个恶心的网站不仅加载慢,而是全是js渲染,有时候你点击了但是弹框并没有出现。

autoIt脚本制作

第一步肯定要去官网下载最新版本的autoIT软件了,下载免安装的zip包就可以了。
下载之后解压到制定目录,对于弹框的元素定位网上有很多教程和案例,我就不在细说了,直接提供脚本给大伙。

; Check if the window is open
If WinExists("[CLASS:#32770]", "打开") ThenWinWaitActive("[CLASS:#32770]", "打开", 10); Focus on the file name input fieldControlFocus("[CLASS:#32770]", "打开", "Edit1"); Set the file path in the input fieldControlSetText("[CLASS:#32770]", "打开", "Edit1", $CmdLine[1]); Sleep for stability (optional, adjust as needed)Sleep(500); Click the Open buttonControlClick("[CLASS:#32770]", "打开", "[CLASS:Button; INSTANCE:1]"); Or use the button text to make it

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com