python+selenium+autoit实现文件上传

问题

在做web端ui层自动化的时候会碰到文件上传的操作,经常有朋友问到,这里总结一下

解决方案

第一种:type=file的上传文件,类似如下的

使用类似这样的代码就可以完成:

driver.find_element(‘name‘,‘file‘).send_keys(‘./小强测试品牌.png‘)

第二种:就是第一种除外的,实现起来较为麻烦,这里用到了autoit,大致步骤如下:

1、下载并安装autoit,之后在开始菜单可以看到如下

AutoIt Windows Info 用于识别Windows控件信息

Compile Script to.exe 用于将AutoIt生成 exe 执行文件

Run Script 用于执行AutoIt脚本

SciTE Script Editor 用于编写AutoIt脚本

2、上传功能如下

3、识别元素,主要是上图中的文件名输入框和打开按钮,使用AutoIt Windows Info完成,记录结果如下:

文件名输入框的class 为“Edit”,Instance为“1”

打开按钮的class 为“Button”,Instance为“1”

4、编写脚本,使用SciTE Script Editor,内容如下:

ControlFocus("文件上传", "","Edit1")

WinWait("[CLASS:#32770]","",10)

ControlSetText("文件上传", "", "Edit1","D:python_workspaceQiangSEAutopic小强测试品牌.jpg")

Sleep(2000)

ControlClick("文件上传", "","Button1");

上述代码中特别需要注意“文件上传”字样是你点击上传按钮之后弹出的对话框的title,可能每个系统会不一样

5、验证脚本

保证页面的上传对话框打开,然后运行脚本tools>go

6、打开Compile Script to.exe工具,将其生成为exe可执行文件

7、python脚本中调用

up=self.driver.find_element(‘class name‘,‘avatar-uploader-trigger‘)

up.find_element(‘class name‘,‘ant-btn‘).click()

os.system(‘D:\python_workspace\QiangSEAuto\upload.exe‘)

time.sleep(20)

其他

其实还有其他的解决方法,感兴趣的自行研究吧,比如还可以利用如下的方式:

Python pywin32库,识别对话框句柄,进而操作

SendKeys 库

keybd_event 模拟按键

时间: 2024-10-01 20:51:34

python+selenium+autoit实现文件上传的相关文章

基于python的selenium两种文件上传操作

方法一.input标签上传     如果是input标签,可以直接输入路径,那么可以直接调用send_keys输入路径,这里不做过多赘述,前文有相关操作方法. 方法二.非input标签上传 这种上传方式需要借助第三方工具,主要有以下三种情况: 1.AutoIt  去调用它生成的au3或者exe格式的文件 2.SendKeys第三方库(目前只支持到2.7版本) 网址:https://pypi.python.org/pypi/SendKeys 3.Python的pywin32库,通过识别对话框句柄来

selenium+java利用AutoIT实现文件上传

1.AutoIT介绍 AutoIT是一个类似脚本语言的软件,利用此软件我们可以方便的实现模拟键盘.鼠标.窗口等操作,实现自动化. 2.实现原理 利用AutoIT编写合适的脚本,然后将脚本编译成可执行文件,在自动化实现时,直接调用此脚本实现文件上传. 备注:编写脚本和编译,需要借助AutoIT提供的工具,但是脚本编译成可执行文件后,可以直接使用,不再需要安装AutoIT. 3.自动化调用 AutoIT脚本编译成可执行文件后,放到本地的某一个目录下 自动化实现过程中,需要上传图片时,首先定位到[上传

利用Selenium实现图片文件上传的两种方式介绍

在实现UI自动化测试过程中,有一类需求是实现图片上传,这种需求根据开发的实现方式,UI的实现方式也会不同. 一.直接利用Selenium实现 这种方式是最简单的一种实现方式,但是依赖于开发的实现. 当开发直接使用file类型的input实现图片文件的上传时,实例:<input type="file" name=''filename"> 我们可以直接利用Selenium提供的方法实现文件上传,但是因为依赖开发的实现,而且目前实现基本都会利用框架,所以这种实现方式有很

python接口自动化7-post文件上传

前言 文件上传在我们软件是不可少的,最多的使用是体现在我们后台,当然我们前台也会有.但是了解过怎样上传文件吗?这篇我们以禅道文档-创建文档,上传文件为例. post请求中的:Content-Type:multipart/form-data  这种类型便是上传文件. 一.环境安装.抓包分析 1.pip install requests_toolbelt,post请求 multipart/form-data  类型 C:\Users\Administrator>pip install request

python,socket通信编程,文件上传例子

写一个file_receive.py和一个file_send.py程序,由file_send.py上传一个文件,file_receive.py接收上传的文件,写到指定的包内 #file_receive.pyimport socket,subprocess,os BASE_DIR = os.path.dirname(os.path.abspath(__file__)) sk = socket.socket() address = ('127.0.0.1',8001) sk.bind(address

python入门第二十八天——文件上传

服务端: 1 #!/usr/bin/env python3 2 #-*- coding:utf-8 -*- 3 ''' 4 Administrator 5 2018/8/1 6 ''' 7 import subprocess 8 import socket,os 9 10 # 创建一个socket: 11 #family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None 12 #创建Socket时,AF_INET指定使用IPv4协议, 13 # 如果

python——基础篇-简易文件上传

post_server import socket import os sk=socket.socket() address=('127.0.0.1',8000) sk.bind(address) sk.listen(3) print('waiting...') BASE_DIR=os.path.dirname(os.path.abspath(__file__)) while 1: conn,addr=sk.accept() while 1: data=conn.recv(1024) cmd,f

autoit 处理文件上传弹出框,并在JAVA中调用

File file2 = new File(".");  String command = file2.getCanonicalPath()+"\\resources\\pages\\testdata\\"+"UploadFile.exe"; //exe 文件存放的绝对路径  Runtime run = Runtime.getRuntime();  try{       Process pro=run.exec(command); //Java调

Python写的一个文件上传upload

#!/usr/bin/env python #coding:utf-8 ''' @date:2014-11-30 @filename:simpleUp.py ''' import web urls=( '/','index', '/test','mytest', '/upload','Upload', ) app = web.application(urls,locals()) class mytest: def GET(self): return "<b><h1>myt