python-web自动化:上传操作

前言-上传操作:有两种情况

1、如果是input可以直接输入路径的,那么直接调send_keys输入路径

2、非input标签的上传,则需要借助第三方工具:

     2.1  Autoit我们去调用其生成的au3或exe文件

     2.2  Send_keys第三方库(目前只支持到2.7版本)

            网址:https://pypi.python.org/pyp/Sendkeys

     2.3  python pywin32库,识别对话框句柄,进而操作

            pyautoit

工具:pywin32库和winspy工具(辅助定位)

例如:百度网盘+上传窗口(windows)

工具的样子:拖拽瞄准镜图标到对应需要定位的地方,可以根据text、class值进行定位,点击windows可以看见该元素的父级,点击父级名称可见父级的父级

(这样上传文件输入框的定位是:edit - combox - comboBoxEx32 - #32770

 

 

实际代码段:

安装第三方库:pip install pywin32

引入:

import win32gui
import win32con

# edit - combox - comboBoxEx32 - #32770 从要用到的文件名输入框一直找到父级顶级

# 前提 :windows上传窗口已经出现。sleep1-2秒等待弹出的出现。(不同的浏览器上传界面的title名称不一样,谷歌是“打开”,火狐是“文件上传”
def upload(filePath,browser_type="chrome"):
if browser_type == "chrome":
title = "打开"
else:
title = ""

#找元素
#一级窗口"#32770","打开" #如果是其它的浏览器,可能需要改第二个参数,谷歌叫打开
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',"打开(&O)") #四级


#往编辑当中,输入文件路径 。
win32gui.SendMessage(edit,win32con.WM_SETTEXT,None,filePath) #发送文件路径
win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button) #点击打开按钮


upload("D:\\123.jpeg")



注意:运行此代码时可以直接登录百度账号,打开上传头像界面,然后运行代码,图片就上传成功了

 


 代码运行后图片显示出来了

 

 

 

posted on 2020-09-23 10:11  小小小、小鱼儿  阅读(648)  评论(0编辑  收藏  举报

导航