1、下载AutoIt,https://www.autoitscript.com/site/autoit/downloads/(这个地址下载下来的不好使的话,自行搜索下载,CSDN上有很多)

2、找到安装后的文件路径,打开autoit窗口信息工具

3、点击要上传图片的按钮,打开文件选择框,注意,一定要打开windows的文件选择框

4、将控件探测工具分别拖至选择图片窗口的文件名输入框以及打开按钮处,记录需要的类等信息

5、打开autoit的sci te编辑脚本,输入;另存为au3文件

WinActivate("打开");
;ControlFocus("title","text",controlID) Edit1=Edit instance 1
ControlFocus("打开", "","Edit1")

; Wait 10 seconds for the Upload window to appear
  WinWait("打开","[CLASS:#32770]",10)

; Set the File name text on the Edit field
  ControlSetText("打开", "", "Edit1", "C:\Users\Administrator\Desktop\1.jpg")

Sleep(2000)

; Click on the Open button
  ControlClick("打开", "","Button1");

参数化的写法:

WinWaitActive($CmdLine[1])
WinActive($CmdLine[1])
ControlSetText($CmdLine[1],"","[CLASS:Edit;INSTANCE:1]",$CmdLine[2])
ControlClick($CmdLine[1],"","[CLASS:Button;INSTANCE:1]")
Send("!o")

附注:
  • ControlFocus ( "title", "窗口文本", controlID)   设置输入焦点到指定窗口的某个控件上;
  • WinWait ( "title题" , "窗口文本" , 超时时间 )  暂停脚本的执行直至指定窗口存在(出现)为止;
  • ControlSetText ( "title", "窗口文本", controlID, "新文本" )   修改指定控件的文本;
  • Sleep ( 延迟 )   使脚本暂停指定时间段;
  • ControlClick ( "title", "窗口文本", 控件ID , 按钮 , 点击次数 )   向指定控件发送鼠标点击命令;

其中,title即AutoIt Window Info识别出的Title字段,controlID即AutoIt Window Info识别出的Class和Instance的拼接,如上图拼接后的结果应为:Button1;

6、验证脚本是否正确,点击页面的上传图片按钮,打开上传图片对话框;切换到sci te编辑脚本窗口,点击工具菜单----执行脚本,注意观察下面的日志,执行完毕后查看页面是否已经上传好图片

7、打开auit编译脚本工具,打开上一步保存的au3文件,转换成exe文件

8、selenium中调用exe程序

Runtime r = Runtime.getRuntime();
//因为工程文件放在了C盘下,直接访问res文件夹下的exe文件会拒绝访问,暂时改成电脑E盘下的可执行文件调用
String scriptFile = "E:/test.exe";
@SuppressWarnings("unused")
Process pro = null;
try {pro = r.exec(scriptFile);browserEmulator.pause(15000);
} catch (IOException e) {e.printStackTrace();}

参数化写法的调用:

Runtime r = Runtime.getRuntime();
String scriptFile = "./res/AutoItScript/upload.exe";
@SuppressWarnings("unused")
Process pro = null;try {pro = r.exec(scriptFile+" "+windowsTitle+" "+fileNameWithPath);logger.info("upload file:" + fileNameWithPath);;} catch (IOException e) {e.printStackTrace();logger.error("Run uploadfile.exe fail");}

转载于:https://www.cnblogs.com/wuhenyan/p/6419494.html

使用AutoIt实现UI自动化上传附件相关推荐

  1. robotframework框架ui自动化测试上传附件问题

    一.input标签直接输入 获取元素直接sendkeys,传入文件路径(此方法没有成功,可能和框架有关,上传流文件不可以?) 二.使用autoit3工具生成exe文件,os.system运行文件 1. ...

  2. autoIT 自动化上传/下载文件图文详解【python selenium】

    转载:原文地址 情景: 在用selenium进行web页面自动化时,时不时会遇到上传附件的情况,常见的情况就是一个上传按钮,点击后弹出windows窗口,选择文件后上传,如下图所示 使用AutoIt这 ...

  3. python selenium下载图片_Python Selenium Web自动化上传/下载文件图文详解

    情景: 在用selenium进行web页面自动化时,时不时会遇到上传附件的情况,常见的情况就是一个上传按钮,点击后弹出windows窗口,选择文件后上传,如下图1所示 图1 这种情况超出了seleni ...

  4. selenium autoit java_Java+Selenium——AutoIt工具处理文件上传

    关于文件上传,这边介绍一个第三方工具,叫AutoIt,简单来说,这个是一个能支持桌面GUI自动化的工具,它支持脚本语言编写.这里,我们用AutoIt来做文件上传的演示.在Selenium脚本中如果需要 ...

  5. 上传附件----q-uploader

    上传附件----q-uploader 一,用到的技术:Vue + Quasar 1,附件上传这种组件在很多UI框架里都有,今天写的是在Quasar框架下 : 属性 说明 url 用来处理上传的服务器的 ...

  6. 原生js--封装点击上传附件

    在日常开发中,经常会有点击按钮上传附件的功能需求. 在我们平时的开发中,已经习惯把当前项目所用到的UI框架中的上传组件拿来直接使用 例如:antd的上传组件 以及element的上传组件,其实在用法上 ...

  7. SAP 没有QM02权限的情况下如何为一个质量通知单单据上传附件?

    SAP 没有QM02权限的情况下如何为一个质量通知单单据上传附件? 正常情况,我们可以在QM01/QM02事务代码创建或者修改一个Quality Notification(质量通知单)的时候上传附件. ...

  8. SAP MM 给合同的ITEM上传附件以及附件查询

    SAP MM 给合同的ITEM上传附件以及附件查询 1,使用事务代码 CV01N为合同上传附件, Document:输入6100000829, Document type 101 (contract) ...

  9. 修改上传附件大小限制方法

    2019独角兽企业重金招聘Python工程师标准>>> 上传附件是大家经常需要操作的,但是很多情况都会限制上传附件的大小.那么如何修改上传附件大小限制呢? 修改上传附件大小限制方法 ...

最新文章

  1. Ubuntu 常用操作
  2. SURF与SIFT比较分析
  3. 十二张图详解Redis的数据结构和对象系统
  4. 张祥雨团队最新工作:用于物体检测的实例条件知识蒸馏 | NeurIPS 2021
  5. 服务器流量异常排查步骤(查看进程的流量)
  6. 异步加载js文件的方法总结
  7. mysql1067默认参数错误_MySQL 1067错误解决方法集合
  8. linux 内核配置mmc,Linux内核编译,配置本机驱动
  9. 11-6渐变的用途和设定技巧
  10. android 系统内测版更新,Flyme Android 10首个内测版已推送,今天你更新了吗?
  11. 缓存LruCache简单创建和使用
  12. EasyUI TextBox的onkeypress事件
  13. openstack 之 kolla安装镜像
  14. tomcat 虚拟目录与显示目录中文件列表
  15. sparkStreaming算子之transform
  16. KGB知识图谱开拓行业应用新展图
  17. 系统管理Lesson 14. Performing Database Backups
  18. wps 写论文时 参考文献的横线怎么消除
  19. 如何查询快递单号物流
  20. 西安的IT要怎么才能发展?

热门文章

  1. helm部署postgresql
  2. 【软考-软件设计师】程序语言的基本概念
  3. 利用线程池为线程创建一个守护线程
  4. 引流虚拟主机和服务器,建站使用云服务器和虚拟主机 哪个更好?
  5. 计算机基础课程金课建设,大学计算机基础金课建设探索与实践
  6. 多媒体计算机探索 教案,多媒体的教学设计
  7. STM32 IO口输入输出模式的简洁见解
  8. MIUI 10 Android 原生字体,[教程] MIUI10全局字体替换教程,了解一下?
  9. php 应用宝支付,U8SDK——应用宝YSDK新的支付流程
  10. 3种方法来卸载Ubuntu软件