文章目录

  • 前言
  • 方法一、使用Autolt生成exe文件,在Python中调用
    • AutoIt介绍及安装
    • 定位元素插件的使用
    • 编写脚本
    • 将脚本转换成可执行文件
    • python代码
    • 在python中调用
  • 方法二、使用Python的pywin32库+WinSpy工具,识别对话框句柄
    • python中安装库并导入
    • windows安装WinSpy工具
    • python代码
  • 总结

前言

本文将介绍在python中 实现自动上传文件的操作


方法一、使用Autolt生成exe文件,在Python中调用

AutoIt介绍及安装

AutoIt是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作,它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务。

官方下载地址:https://www.autoitscript.com/site/

分别下载图中标记的 Autolt和Editor

解压后放在同一个文件夹内,并分别安装

定位元素插件的使用

Au3Info_x64为元素识别器,可通过拖动Finder Tool来定位元素

根据AutoIt Info所识别的控件信息,打开SciTE Script Editor编辑器(位置:SciTE文件夹中的SciTE.exe)

编写脚本

编写脚本输入如下内容,并保存文件为FileUpload.au3

代码如下(示例):

;识别文件上传弹出窗口
ControlFocus("打开", "","Edit1");等待10秒钟,等待上传窗口出现
WinWait("[CLASS:#32770]", "",10);设置需要上传的文件路径到文件名输入框中
ControlSetText("打开", "", "Edit1", "C:\Users\User\Desktop\测试图片\3.jpg")Sleep(2000);点击打开按钮
ControlClick("打开", "", "Button1");

将脚本转换成可执行文件

脚本写好后,点击Tools->Go,运行脚本,这一步用来测试脚本是否正常。需要注意,运行之前需要先打开上传文件的窗口。

脚本运行正常后,打开AutoIt3\Aut2Exe文件夹中的Aut2exe_x64.exe工具,将脚本转换成可执行文件,如下图。此可执行文件可被python程序调用

python代码

代码如下(示例):

import os
import timedef file_upload_autolt(filepath):  # 方法1:借助Autolt工具''':param filepath: 需要上传文件的路径:return: None'''time.sleep(3)os.system(filepath)time.sleep(3)

在python中调用

代码如下(示例):

self.file_upload_autolt(r'D:\auto\radar\unit\FileUpload.exe') # 注意,这里上传的是exe文件的位置,而不是图片的位置

方法二、使用Python的pywin32库+WinSpy工具,识别对话框句柄

python中安装库并导入

代码如下(示例):

# 安装库
pip install pywin32# 导入库
import win32gui
import win32con

windows安装WinSpy工具

该工具用于定位窗口元素拿到Class值

工具百度网盘提取:
https://pan.baidu.com/s/1DRX3m8Xa0iHSzKXH25PMRw 79gt

python代码

代码如下(示例):

def file_upload_winspy(title,filepath): # 方法2:借助Winspy工具''':param title: 打开上传文件的窗口名称,不同浏览器的名称不同:param filepath: 需要上传文件的路径:return: None'''time.sleep(3)# 一级窗口,即弹出的windows页面dialog = win32gui.FindWindow("#32770", title)# 打开窗口,地址栏输入框ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, "ComboBoxEx32", None)# 文件名输入框后方的图片格式下拉框comboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, "ComboBox", None)# 文件名输入框的class元素为Edit,无文本内容,所以第四个参数为Noneedit = win32gui.FindWindowEx(comboBox, 0, 'Edit', None)# 打开按钮的class元素为Button,文本为打开(&O)button = win32gui.FindWindowEx(dialog, 0, 'Button', "打开(&O)")# 输入文件的绝对路径win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, filepath)# 点击 打开 按钮win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)  # 点击打开按钮time.sleep(3)

总结

以上两种方式均可实现上传文件的操作,根据个人喜好使用即可

web ui自动化之模拟上传文件操作相关推荐

  1. UI 自动化中如何处理上传文件事件

    在UI自动化中,我们经常会遇到上传文件操作.处理上传事件是一个比较麻烦的操作,因为点击上传控件会弹出Windows窗口供用户选择文件,但是Windows窗口是浏览器之外的组件,所以selenium本身 ...

  2. Selenium+java - 借助autolt完成上传文件操作

    写在前面: 上传文件是每个自动化测试同学会遇到,而且可以说是面试必考的问题,标准控件我们一般用sendkeys()就能完成上传,但是我们的测试网站的上传控件一般为自己封装的,用传统的上传已经不好用了, ...

  3. Web自动化成长之路:selenium中鼠标、键盘、上传文件操作、使用js脚本

    前言:UI自动化操作时,鼠标操作.键盘操作.文件上传都是使用普遍且重要的操作,接下来我们就一起来学习下吧 一.文件上传 a)send_keys:一定是要是input元素 input 里的type=&q ...

  4. 解决Java Web对Linux服务器不能上传文件的难题

    一 Java Web文件上传程序 页面中用html或某个js框架,弹出选择上传文件界面,用户选择文件后上传:传到服务器上调用servlet进行处理,把接受到的内容写入服务器相应目录.Java Web上 ...

  5. part.write java_小白向:web中利用request.getPart()上传文件到服务器

    被文件上传弄得焦头烂额的一天,果然web中的路径和各种设置真的好讨厌= = 下面是超级小白的.及其简约的"详"解 1.明确目的: 用户将 1.txt 文件 上传到 服务器(web工 ...

  6. python request 库传送formdata_Python Requests库 form-data 上传文件操作

    请求数据示例: ------WebKitFormBoundaryKLoWgrA4O40MayHM Content-Disposition: form-data; name="id" ...

  7. Vue上传文件操作(没有CV,认真看)

    项目场景: 通过vue上传文件基本操作 问题描述: 使用html上传文件时,很容易理解,那么vue文件上传呢?我们学了vue不可能还往里面写原生html的内容吧! 先放代码再解释: <templ ...

  8. python request file upload_Python基于requests实现模拟上传文件

    方法1: 1.安装requests_toolbelt依赖库#代码实现 def upload(self): login_token = self.token.loadTokenList() for to ...

  9. web ui自动化之模拟鼠标操作 - ActionChains

    文章目录 前言 ActionChains类方法介绍 1.执行所有存储的操作 - perform() 2.鼠标单击 - click() 3.点击鼠标左键,不松开 - click_and_hold() 4 ...

最新文章

  1. VS2010不能断点/下断的问题
  2. 开发环境下jboss 7.1.1 Final 的jsp热部署解决方案--转
  3. flume数据采集:js埋点
  4. CENTOS7 Python3.7安装pip模块以及pip使用
  5. mac php errorlog,Mac下使用php的error_log()函数发送邮件
  6. HDU2527 Safe Or Unsafe【哈夫曼编码】
  7. Astute Graphics for Mac(ai创意插件合集)
  8. 求二叉树中某结点的父结点(左右孩子表示法)
  9. 雷林鹏分享:Redis 简介
  10. 学习数据库Mysql/Oracle/SQL从入门到进阶书籍pdf版吐血整理推荐附网盘链接(珍藏版)
  11. Mac使用Excel卡顿的提升办法之一
  12. java物流管理系统_基于java的物流管理系统
  13. 【单调队列】51nod 1275 连续子段的差异
  14. FPGA之道(51)数据的存储
  15. 外呼系统四大功能,助力企业进入智能电销时代
  16. Jackknife,Bootstraping, bagging, boosting, AdaBoosting, Rand forest 和 gradient boosting的简单介绍
  17. Juniper模拟器使用指南
  18. C++ 10 翁恺> 继承
  19. 斐波那契数列求和(递归)
  20. sql server 可更新订阅 配置_电子课本|2020秋 鲁教版初中化学九年级上册教材电子课本(高清更新可打印)...

热门文章

  1. 第一次写博客,在正式记录之前,先来一个背景简介和分享
  2. python——原码转补码
  3. 【收藏】HUE配置HDFS报错Cannot access: /. The HDFS REST service is not available. “ ““
  4. Python实现贝叶斯优化器(Bayes_opt)优化卷积神经网络回归模型(CNN回归算法)项目实战
  5. Java学习路线图—精心整理 java进阶
  6. java rhino import_java – rhino嵌入
  7. CAN收发器TJA1050与MCP2551的对比
  8. 软件测试方法与测试策略
  9. 光缆单盘检测与光缆线路测试需使用双窗口吗?
  10. 谴责中软国际,特么的无耻。