当前位置:网站首页>web自动中利用win32上传附件
web自动中利用win32上传附件
2022-07-02 06:22:00 【bthtth】
一 场景如下
在百度首页,"按照图片搜索"时,需要上传图片.
二 工具和环境
1\需要安装winspy这个工具
2\需要安装win32库 pip install pywin32
winspy的用法
定位
(1)调用文件上传的窗口
(2)打开winspy,单击"瞄准"形状的按钮,不松手.将按钮拖动到需要定位的窗口元素,比如"文件名"的输入框和"打开"按钮
(3)然后在winspy获取元素的class 和 元素文本
如果没有文本内容,cation就是空
(4)查看元素的层级路径.
在winspy面板点击"more"(有些版本是tree),
点击"locate",就会显示"edit"所在的路径. 依次是句柄\classname\文本
可以看到"edit"一共有4级路径,而且可以得到每一级路径的句柄\类和文本
使用pywin32 完成上传文件
win32gui.FindWindow(IpClassName,IpWindowName)
ipclassname 元素的class ipwindowname caption
win32gui.FindWindowEX(hwndparent=0, hwndchildafter=0,ipszclass=None,ipszwindow=None)
搜索类名和文本匹配的窗体
hwndparent 若不为0,则搜索句柄为hwndparent的窗体
hwndchildafter 若不为0,则按照z-index的顺序搜索hwndchildafter的子窗体,否则从第一个子窗体搜索
ipszclass class 的名称
ipszwindow 窗体的caption
win32gui.sendMessage(hwnd,msg,Wparame,Iparame)
hwnd:接受消息的窗体的句柄
msg:消息,预先有windows定义好的命令
wparame和iparame不清楚,关于这两个参数可以参考这篇文章
wparame和iparame的解释
import win32gui
import win32con
# 获取顶级窗口,传入顶级窗口的class和caption
dialog = win32gui.FindWindow("#32770","打开文件")
# 获取二级窗口
# 传入父窗口,0,窗口class和caption,如果caption为空就用None
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,"文件路径")
# 点击"打开"
win32gui.sendmessage(dialog,win32con.WM_CoMMANd,1,button)
边栏推荐
- Bgp Routing preference Rules and notice Principles
- 【每日一题】写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。
- Eggjs -typeorm 之 TreeEntity 实战
- Don't use the new WP collection. Don't use WordPress collection without update
- 广告业务Bug复盘总结
- In depth understanding of JUC concurrency (I) what is JUC
- 稀疏数组(非线性结构)
- Redis——Cluster数据分布算法&哈希槽
- In depth understanding of JUC concurrency (II) concurrency theory
- Sentinel规则持久化到Nacos
猜你喜欢
随机推荐
递归(迷宫问题、8皇后问题)
CUDA中的存储空间修饰符
LeetCode 78. subset
Name six schemes to realize delayed messages at one go
构建学习tensorflow
Codeforces Round #797 (Div. 3) A—E
Bgp Routing preference Rules and notice Principles
提高用户体验 防御性编程
日期时间API详解
Cglib agent - Code enhancement test
Does the assignment of Boolean types such as tag attribute disabled selected checked not take effect?
实现strStr() II
【张三学C语言之】—深入理解数据存储
LeetCode 40. Combined sum II
CUDA中的异步数据拷贝
Redis - grande question clé
深入了解JUC并发(二)并发理论
注解和反射详解以及运用
Redis——Cluster数据分布算法&哈希槽
Network related knowledge (Hardware Engineer)