web ui自动化之模拟上传文件操作


前言

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


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

AutoIt介绍及安装

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

官方下载地址:https://www.autoitscript.com/site/
下载Autolt
分别下载图中标记的 Autolt和Editor
下载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");

将脚本转换成可执行文件

脚本写好后,在AutoIt3\SciTE目录中,点击SciTE.exe文件,然后Tools->Go,运行脚本,这一步用来测试脚本是否正常。需要注意,运行之前需要先打开上传文件的窗口。
在这里插入图片描述

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

python代码

代码如下(示例):

import os
import time

def 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,无文本内容,所以第四个参数为None
    edit = 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)

总结

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

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值