python自动化之WinSpy+pywin32文件上传操作

安装pywin32库:pip install pywin32

1. 访问百度网址,点击图片按钮:

2. 点击上传

3. 使用winspy工具定位路径输入框 和打开按钮 如何定位请自行查找 参考https://www.cnblogs.com/xiaogongjin/p/11546518.html#4361591

4.输入绝对路径,点击打开 ,前提条件为,windows 上传弹框已经可见,可以sleep1-2秒等待出现

小白环境 Name: Version:
    python 3.7
    WinSpy 1.0.2.7
    pywin32 227
链接:https://pan.baidu.com/s/1FDbdczsg1Q8QL1-4RfsX8g
提取码:ktrz
注意:pywin32兼容Python版本,以上环境亲测可用

5.下方代码直接复制执行即可,需要修改文件路径

from selenium import webdriver
import win32gui
import win32con
import time
driver=webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.maximize_window()#最大
driver.find_element_by_class_name('soutu-btn').click()
time.sleep(2)
imgpath='D:\\abc.jpg'
driver.find_element_by_class_name('upload-pic').click()
time.sleep(2)
# driver.find_element_by_class_name('upload-pic').send_keys('imgpath')
#一级顶层窗口,此处title为上传窗口名称,浏览器不一样上传窗口名称不一样
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,'D:\\abc.jpg')
#点击打开上传文件
win32gui.SendMessage(dialog,win32con.WM_COMMAND,1,button)

打包封装方法
def file_upload(self,filePath,browser_type='chrome'):
'''
windows 上传弹框已经可见,可以sleep1-2秒等待出现
:param filePath: 文件绝对路径例 D:\\123.abc
:param browser: 浏览器类型默认为 chrome
:return:
'''
if browser_type.lower()== 'chrome':
title='打开'
elif browser_type.lower()== 'Firefox':
title='文件上传'
elif browser_type.lower() =='ie':
title='选择要加载的文件'
logging.info('本次使用{0}进行上传操作'.format(browser_type))
# 一级顶层窗口,此处title为上传窗口名称,浏览器不一样上传窗口名称不一样
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', None)
# 执行操作 输入文件路径
win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, filePath)
# 点击打开上传文件
win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)
  • 19
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值