文件上传分input标签和非input标签,两种标签上传的方式不一样。
一、input标签
如果是input可以直接sendkeys赋值,传入问价的绝对路径就行。
driver.find_element_by_css_selector(".upload-pic").send_keys(r"E:\Python_script\Webdriver\shuiyin.png")
二、非input标签
这是主要是指button标签,我们需要借助第三方的模块来实现文件的上上传。
1,首先我们需要安装pywin32模块,使用命令安装
pip install pywin32
2,模块安装成功后就是导入模块了
一般我们直接导入import win32gui, win32con
如果这样无法导入win32gui, 换种方式,可能是你的python版本不一样在,这时候就通过from win32 import win32gui
方式导入就行。
3,接下来就是使用pywin32模块完成文件的上传
# 上传凭证(非input型)
driver.find_elements_by_tag_name("button")[1].click()
time.sleep(3) # 一定要加,弹出框后才有后续上传,之前因为没写弹窗没出后续执行无效
dialog = win32gui.FindWindow("#32770", "打开") # 一级窗口 ‘打开窗口’
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", None) # 四级
# 往文件名编辑框中输入文件路径
# 上传操作
win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, "E:\\1.jpg") # 放入上传文件的绝对路径
win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button) # 点击打开按钮