• web自动化中的上传操作


    上传操作有两种情况:

      1、如果是input可以直接输入路径的,可以直接调用send_keys()输入路径,具体实现可以参照https://www.cnblogs.com/wsk1988/p/12705374.html

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

        2-1、AutoIt  我们去调用其生成的au3或者exe文件

        2-2、SendKeys第三方库(目前只支持2.7版本)

        2-3、Python pywin32库,识别对话框句柄,进行操作

        2-4、pyatoit   如果操作非window控件  可以了解这个

      使用工具:

        pywin32和spy++      

    dialog=win32gui.FindWindow(lpClassName,lpWindowName)
    自顶层创久开始寻找匹配条件的窗口,并返回这个窗口的句柄
    lpClassName: 类名,在Spy++里能看到
    lpWindowName: 窗口名,在标题栏上能看到的名字

    comboBoxEx32=win32gui.FindWindowEx(hwndParent=0,hwndChildAfter=0,lpszClass=None,lpszWindow=None)
    搜索类名和窗体名匹配的窗体,并返回这个窗体的句柄,找不到就返回0
    hwndParent: 若不为0,则搜索句柄为hwndParent窗体的子窗体
    hwndChildAfter:若不为0,则按照z-index的顺序从hwndChildAfter向后开始搜索子窗体,否则从第一个子窗体开始搜索
    lpszClass:字符型,是窗体的类名,这个可以在spy++里找到
    lpszWindow:字符型,是窗口名,也就是标题栏上你能看到的那个标题(spy中的text),没有传None

    win32gui.SendMessage(hWnd,Msg,wParam,lParam)
    hWnd:整型,接收消息的窗体句柄
    Msg: 整型,要发送的消息,这些消息都是windows预先定义好的
    wParam:整型,消息的wParam参数
    lParam:整型,消息的lParam参数

    
    
    代码实现如下:
     1 import win32gui
     2 import win32con
     3 # 谷歌浏览器上传文件
     4 def upload_file(filepath):
     5     # 找到一级窗口,返回这个窗口的句柄
     6     dialog=win32gui.FindWindow("#32770","打开")
     7     # 找到二级窗口
     8     comboBoxEx32=win32gui.FindWindowEx(dialog,0,"ComboBoxEx32",None)
     9     # 找到三级窗口
    10     comboBox=win32gui.FindWindowEx(comboBoxEx32,0,"ComboBox",None)
    11     # 找到四级窗口
    12     edit=win32gui.FindWindowEx(comboBox,0,"Edit",None)
    13     # 找到打开窗口-二级窗口
    14     button=win32gui.FindWindowEx(dialog,0,"Button","打开(&O)")
    15 
    16     # 操作
    17     # 输入文件地址
    18     # 点击打开按钮,提交文件
    19     win32gui.SendMessage(edit,win32con.WM_SETTEXT,None,filepath)  #发送文件的路径 filepath上传的文件路径
    20     win32gui.SendMessage(dialog,win32con.WM_COMMAND,1,button)

    备注:

    谷歌浏览器实现文件上传的方式,这个函数可以直接使用,如果是其他的浏览器只需要更改一下     dialog=win32gui.FindWindow("#32770","打开")改成对应的参数就可以了          

  • 相关阅读:
    并发编程之多线程理论
    僵尸进程和孤儿进程
    并发编程之多进程
    并发编程之多进程理论
    操作系统介绍
    面向对象和网络编程练习题
    网络编程——socket编程
    面向对象练习题
    面向对象软件开发实战
    异常处理
  • 原文地址:https://www.cnblogs.com/wsk1988/p/12710501.html
Copyright © 2020-2023  润新知