selenium自动化之文件上传操作

15 篇文章 0 订阅
10 篇文章 1 订阅

上传操作有两种情况
1.如果是input可以直接输入路径的,那么直接调用send_keys输入路径
2.非input标签的上传,则需要借助第三方工具
  2.1 AutoIt 我们去调用其生成的au3或exe文件
  2.2 SendKeys第三方库(目前只支持到2.7版本)
      网址:http://pypi.python.org/pypi/SendKeys
  2.3 Python pywin32库,识别对话框句柄,进行操作

工具:pywin32和spy++

 

安装 pywin32

pip install pywin32

安装winspy

下载地址:https://sourceforge.net/projects/winspyex/

下载下来后直接解压就可以了

 

上传操作:

import win32gui

import win32con

 

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,"打开(&0)") # 二级

 

filepath = 'D:\\apk.txt'

# 操作

win32gui.SendMessage(edit,win32con.WM_SETTEXT,None,filepath) # 发送文件路径

win32gui.SendMessage(dialog,win32con.WM_COMMAND,1,button) # 点击打开按钮 

 

win32gui.FindWindow(IpClassName,IpWindowName)

自顶层窗口开始寻找匹配条件的窗口,并返回这个窗口的句柄

IpClassName:类名,在spy++里能看到

IpWindowName:窗口名,标题栏上能看到的名字

 

win32gui.FindWindowEx(hwndParent=0,hwndChildAfter=0,IpszClass=None,IpWindow=None)

搜索类名和窗体名匹配的窗体,并返回这个窗体的句柄,找不到就返回0

hwndParent:若不为0,则搜索句柄为hwndParent窗体的子窗体

hwndChildAfter:若不为0,则按照z-index的顺序从hwndChildAfter向后开始搜索子窗体,否则从第一个字窗体开始搜索

IpszClassName:字符型,是窗体的类名,这个可以在spy++里找到

IpWindowName:字符型,是窗口名,也就是标题上你能看见的那个标题

 

win32gui.SendMessage(hWnd,Msg,wParam,IParam)

hWnd:整型,接收消息的窗体句柄

Msg:整型,要发送的消息,这些消息都是Windows预先定义好的

wParam:整型,消息的wParam参数

IParam:整型,消息的IParam参数

 

实例(Chrome浏览器),只支持Windows:

import win32gui
import win32con

def upload(filepath):

    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,"打开(&0)") # 二级

    # 操作
    win32gui.SendMessage(edit,win32con.WM_SETTEXT,None,filepath) # 发送文件路径
    win32gui.SendMessage(dialog,win32con.WM_COMMAND,1,button) # 点击打开按钮

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值