——————·今天距2021年还有321天·——————
这是ITester软件测试小栈第96次推文
进行web自动化的时候,文件上传是很常见的操作,例如上传用户头像,上传身份证信息等。
在selenium中,文件上传可以分为两种场景:
input标签:这种可以用selenium提供的send_keys()方法轻松解决;
非input标签:实现起来比较困难,可以借助第三方库pypiwin32。
input标签上传文件
input标签,可以直接调用send_keys时输入文件路径。
首先,写一个input标签的上传文件小demo:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>上传文件</title>
</head>
<body>
<input type="file" name="my_file">
</body>
</html>
浏览器打开效果如下:
接着使用send_keys()上传文件:
from selenium import webdriver
driver = webdriver.Chrome()
# input标签的html文件
driver.get('http://localhost:63342/ui_autotest/upload.html')
file_ele = driver.find_element_by_name('my_file')
# 上传本地图片
file_ele.send_keys(r"C:\Users\96984\Pictures\Camera Roll\小猪佩奇.gif")
非input标签上传文件
这种上传方式需要借助第三方工具,主要有以下三种情况:
1.AutoIt 去调用它生成的au3或者exe格式的文件;
2.SendKeys第三方库;
3.Python的pywin32库,通过识别对话框句柄来进行操作;
以下介绍通过pywin32进行操作。
环境安装:
①安装pypiwin32, 使用命令 pip install pypiwin32
②下载WinSpy包,解压后,双击可执行文件即可(微信公众号后台回复:WinSpy领取)。