Web页面 文件上传
Web页面测试中,经常会遇到文件上传操作,本文主要介绍两种不同情况下上传操作的处理方法。
标签为input
如果是input标签可以直接输入路径的,那么直接调用send_keys输入路径即可。
<input type=’file’ name=’my_file’>
xxx.send_keys(file_path)
标签为非input
非input标签的上传,需要借助第三方工具:
- Python pywin32库,识别对话框句柄,进而操作。
- 文件名输入框的路径为:
上传窗口—>ComboBoxEx32—>ComboBox—>Edit
上传窗口—>Button
谷歌浏览器中上传窗口如下:
函数说明:
在pywin32中,查找一层串口的方法为:win32gui模块下的FindWindow
在某窗口下查找子窗口的方法为:win32gui模块下的FindWindowEx
执行编辑操作、点击操作的方法为:win32gui模块下的SendMessage
代码如下:
import win32gui
import win32con
def upload_chrome(filepath):
#一级窗口
dialog = win32gui.FindWindow("#32770","打开") #Chrome,“文件上传”--->Firefox
#二级窗口
ComboBoxEx32 = win32gui.FindWindowEx(dialog,0,"ComboBoxEx32",None)
#三级窗口
comboBox = win32gui.FindWindowEx(ComboBoxEx32,0,"ComboBox",None)
#四级窗口 ---文件路径输入框
edit = win32gui.FindWindowEx(comboBox,0,"Edit",None)
#二级窗口,打开按钮
button = win32gui.FindWindowEx(dialog,0,"Button","打开(&0)")
#发送文件路径
win32gui.SendMessage(edit,win32con.WM_SETTEXT,None,filepath)
#点击打开按钮
win32gui.SendMessage(dialog,win32con.WM_COMMAND,1,button)
#指定要上传的文件路径
file_path = "D:\\test.txt"
upload_chrome(file_path)
PS:其他浏览器参照以上代码,修改相应的参数即可