wfwt180801-
\'\'\'百度首页搜索上传图片为例\'\'\'

#前提条件 1.使用winspy定位绝对路径
#前提条件 2.安装库pywin32 采用pip安装pip install pywin32 或其他途径安装

#1.访问百度网址
#2.点击图片按钮
 
 

#3.点击上传
 
 

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

#5.输入绝对路径,点击打开 ,前提条件为,windows 上传弹框已经可见,可以sleep1-2秒等待出现
小白环境 Name: Version:
    python 3.7
    WinSpy 1.0.2.7
    pywin32 227
链接:https://pan.baidu.com/s/1fgIVbyPXbVenRMxSb5u89Q
提取码:7wuo
注意:pywin32兼容Python版本,以上环境亲测可用

pywin32各版本连接:https://github.com/mhammond/pywin32/releases



下方代码可直接复制执行,需要更新上传文件路径
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)

链接:https://pan.baidu.com/s/1fgIVbyPXbVenRMxSb5u89Q
提取码:7wuo

 

安装状况1:安装时提示无法找到注册信息

解决办法参考链接:https://blog.csdn.net/u011702002/article/details/79624256

复制以下代码,执行后重新安装

 

代码
py3.5.2
import sys

 

from winreg import *

 

# tweak as necessary
version = sys.version[:3]
installpath = sys.prefix

 

regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version)
installkey = "InstallPath"
pythonkey = "PythonPath"
pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % (
installpath, installpath, installpath
)

 

def RegisterPy():
try:
reg = OpenKey(HKEY_CURRENT_USER, regpath)
except EnvironmentError as e:
try:
reg = CreateKey(HKEY_CURRENT_USER, regpath)
SetValue(reg, installkey, REG_SZ, installpath)
SetValue(reg, pythonkey, REG_SZ, pythonpath)
CloseKey(reg)
except:
print("*** Unable to register!")
return
print("--- Python", version, "is now registered!")
return
if (QueryValue(reg, installkey) == installpath and
QueryValue(reg, pythonkey) == pythonpath):
CloseKey(reg)
print("=== Python", version, "is already registered!")
return
CloseKey(reg)
print("*** Unable to register!")
print("*** You probably have another Python installation!")

 

if __name__ == "__main__":
RegisterPy()


状况2:安装后 import win32gui异常

pip install pypiwin32  安装后重新正常导入即可

 

 

分类:

技术点:

相关文章: