python+selenium实现文件上传
文件上传是web测试种很常见的一个场景
文件上传功能实现分为两类,一类是input标签,这种比较简单,可以直接send_keys实现上传操作;但遇到非input标签的因为是windows控件所以有些情况下通过selenium却没法操作,因此需要借助一些第三方库来实现。
下面主要介绍一下非input标签的情况:
1 Autolt 需要去调用其生成的.au3或.exe文件.----操作繁琐不易理解,不推荐
2 SendKeys第三方库(目前只支持到2.7版本)----不支持3.x版本的python,不推荐
3 Python pywin32库,识别对话框句柄,进而操作 ------pip install pywin32
3.1 winspy识别控件,下载解压即可
3.2 找到控件
3.3 操作控件





绝对路径 一层一层找,从Edit开始向上一级一级找到最外层#32770
找到输入框 #32770 --> ComboBoxEx32 --> ComboBox --> Edit
找到打开按钮 #32770 --> Button
下面直接上代码:
1 from time import sleep 2 import win32con 3 import win32gui 4 5 6 def upload(file_path, driver = 'Chrome'): 7 # 谷歌浏览器 8 if driver == 'Chrome': 9 title = '打开' 10 dialog = win32gui.FindWindow('#32770', title) 11 ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None) 12 ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None) 13 Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None) 14 Button = win32gui.FindWindow('Button', '打开(&O)') 15 # 输入文件路径 16 win32gui.SendMessage(Edit, win32con.WM_SETTEXT, None, file_path) 17 # 点击打开按钮 18 win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, Button) 19 sleep(3) 20 21 22 if __name__ == '__main__': 23 file = r'demo.txt' 24 upload(file)
别怕路长梦远👣,总有星河照耀✨,未来可期💖

浙公网安备 33010602011771号