1、编写上传文件类方法
import win32con
import win32gui
# 选择文件路径格式【选择多个文件时空格隔开,并且每个文件路径都使用双引号】
# filePath = ("\"C:\\Users\\sjzhakj\\Desktop\\文档\\GEP-R\\北京各区边界\\北京市各区边界.shp\"" + " " +
# "\"C:\\Users\\sjzhakj\\Desktop\\文档\\GEP-R\\北京各区边界\\北京市各区边界.cpg\"" + " " +
# "\"C:\\Users\\sjzhakj\\Desktop\\文档\\GEP-R\\北京各区边界\\北京市各区边界.dbf\"" + " " +
# "\"C:\\Users\\sjzhakj\\Desktop\\文档\\GEP-R\\北京各区边界\\北京市各区边界.prj\"" + " " +
# "\"C:\\Users\\sjzhakj\\Desktop\\文档\\GEP-R\\北京各区边界\\北京市各区边界.shx\"")
# 【使用此方法上传文件时,需在setting设置里安装pypiwin32,安装后重启Pycharm】
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)
注:安装pywin32的库,命令行安装 python -m pip install pypiwin32,或setting设置里安装pypiwin32,安装后重启Pycharm
2、方法调用
上传多个文件:
# 点击上传按钮弹出选择文件窗
self.driver.find_element(By.CSS_SELECTOR, ".el-button--mini > span:nth-child(1)").click()
time.sleep(5)
filePath = ("\"C:\\Users\\sjzhakj\\Desktop\\文档\\GEP-R\\北京各区边界\\北京市各区边界.shp\"" + " " +
"\"C:\\Users\\sjzhakj\\Desktop\\文档\\GEP-R\\北京各区边界\\北京市各区边界.cpg\"" + " " +
"\"C:\\Users\\sjzhakj\\Desktop\\文档\\GEP-R\\北京各区边界\\北京市各区边界.dbf\"" + " " +
"\"C:\\Users\\sjzhakj\\Desktop\\文档\\GEP-R\\北京各区边界\\北京市各区边界.prj\"" + " " +
"\"C:\\Users\\sjzhakj\\Desktop\\文档\\GEP-R\\北京各区边界\\北京市各区边界.shx\"")
upload_file.upload_file(filePath)
上传单个文件:
# 点击上传按钮弹出选择文件窗
# 9 | click | css=.el-button--mini:nth-child(1) > span |
self.driver.find_element(By.CSS_SELECTOR, ".el-button--mini:nth-child(1) > span").click()
# 10 | type | css=.el-card__body > input | C:\fakepath\bj_lulc_16.tif
time.sleep(5)
filePath = "\"C:\\Users\\sjzhakj\\Desktop\\文档\\GEP-R\\bj_lulc_16.tif\""
upload_file.upload_file(filePath)