python之selenium窗口文件上传

解决selenium自动化上传图片或文件出现windows窗口问题
在实际工作中,会经常遇到上传图片或文件的操作,有的是input标签的,有的是非input标签属性的。他们都有一个共同的特性会出现windows的弹出窗。

下面说下出现windows的弹出窗后怎么解决:总共2个步骤

1,首先点击打开,待出现选择文件的弹出窗后:
image

安装python三方库
pip install pywin32

'''实现非input标签上传文件,调用此方法需要打开windows上传文件的系统窗口再调用'''

点击查看代码
import win32gui
import win32con
 
 
def upload_file(file_path):
    '''
    :param file_path:上传文件的路径
    :return:
    '''
    dialog = win32gui.FindWindow("#32770", "打开")
    comboxex32 = win32gui.FindWindowEx(dialog, 0, "ComboBoxEx32", None)
    combox = win32gui.FindWindowEx(comboxex32, 0, "ComboBox", None)
    edit = win32gui.FindWindowEx(combox, 0, "Edit", None)
    button = win32gui.FindWindowEx(dialog, 0, "Button", "打开(&0)")
    win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, file_path)
    win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)
 
 
upload_file(r'C:\Users\admin\Desktop\Screenshot\mvcSnipaste_2019-12-26_20-59-19.png')

第二种方式:

点击查看代码
    # 模拟文件选择对话框,提交文件
    def upload_file(self, file_path):
        import pywinauto
        '''
        :param file_path:上传文件的路径
        :return:
        '''
        time.sleep(2)  # 等待文件选择对话框出现
        # 使用Pywinauto控制文件选择对话框
        app = pywinauto.Desktop()
        dialog = app['打开']
        dialog['Edit'].type_keys(rf'{file_path}')
        dialog['Button'].click()
posted @ 2025-03-20 14:53  测试周小白  阅读(142)  评论(0)    收藏  举报