前言:我们什么时候用到上传文件,上传文件怎么操作?那我们的selenium能不能对上传文件进行操作?
解答:1.当我们web自动化需要上传文件来进行自动化的时候,就需要用到
2.我们要操作上传文件窗口需要用到pypiwin32模块,这个模块是操控windows弹出框而准备的
3.不能,因为上传文件窗口是windows弹出框。我们selenium只是对html页面做操作,不能针对windows端来操作。所以我们需要pypiwin32
安装 pip install pypiwin32 就好了。
pypiwin32这个可以操控windows界面。好奇的同学请自行百度搜索扩展
这里我们不详细写。我给出封装好的函数调用就可以了。这个函数是针对谷歌弹出框而做的。
代码如下:
import win32gui import win32con # edit - combox - comboBoxEx32 - #32770 # 前提 :windows上传窗口已经出现。sleep1-2秒等待弹出的出现。 def upload(filePath,browser_type="chrome"): if browser_type == "chrome": title = "打开" else: title = "" #找元素 #一级窗口"#32770","打开" dialog = win32gui.FindWindow("#32770",title) # 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',"打开(&O)") #四级 #往编辑当中,输入文件路径 。 win32gui.SendMessage(edit,win32con.WM_SETTEXT,None,filePath) #发送文件路径 win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button) #点击打开按钮
这里的代码只需要传入你要上传的文件路径即可。
当我们web自动化遇到弹出框,调用这个方法函数,就可以实现文件上传
文章来源: https://blog.csdn.net/qq_39413365/article/details/90729483