不乱于心,不困于情。
不畏将来,不念过往。如此,安好。

Python非input标签的文件上传操作

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:其他浏览器参照以上代码,修改相应的参数即可

赞(0)
未经允许不得转载:seo优化_前端开发_渗透技术 » Python非input标签的文件上传操作