• 如此简单的上传文件操作


    在做UI自动化我们可能会遇到-----上传文件操作

    上传文件有两种情况:

    • input标签
    • 非input标签

    1、对于input标签的话我们直接传递一个路径就可以了

    2、对于非input标签的话,我们需要借助第三方工具来实现了:

    • AutoIt     调用其生成的au3或者是exe文件,太麻烦了,我们不用
    • SendKeys 第三方库,但是这个已经10几年没有维护了,不用
    • pywin32库   识别对话框句柄,实现上传文件操作、

    安装:pip install pypiwin32   或者是   python -m pip install pypiwin32

    还需要安装一个工具: WinSpy   工具获取附上:

    链接: https://pan.baidu.com/s/14Z5BrMR35pwNkVQBNd0uQA
    提取码:lh7r

    下载直接解压选择自己电脑版本打开exe文件即可

     以上就是工具打开的界面了

    使用方法:

     主要看的是class和Text属性

     这个界面可以看到现在定位的元素的父元素

    因为我们使用代码找元素必须得是绝对路径找,所以需要一层一层的往上面找

    废话不说了,直接上代码吧

    import win32gui
    import win32con
    import time
    
    
    # edit - combox - comboBoxEx32 - #32770
    # 1找到输入框和打开按钮 元素;2、输入地址,点击打开。
    # 前提 :windows上传窗口已经出现。sleep1-2秒等待弹出的出现。
    
    
    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)    # 点击打开按钮

    传递的参数只需要往这个函数里面传递一个路径即可上传成功

    注意:调用此函数之前,一定要先将上传文件的窗口打开,

      此函数可以共用,如果浏览器不同,只需要改下title这个参数就可以了

  • 相关阅读:
    nodejs 单元测试框架api文档
    Pytest官方教程-22-API参考-Hooks
    【pytest】Hook 方法之 pytest_addoption :注册命令行参数
    k8s架构
    k8s 组件介绍-API Server API Server简介
    SpringCloud 应用在 Kubernetes 上的最佳实践 — 线上发布(可灰度)
    Elasticsearch 常见的 8 种错误及最佳实践
    Istio路由配置
    监控系统选型,这篇不可不读!
    logstash实现日志文件同步到elasticsearch深入详解
  • 原文地址:https://www.cnblogs.com/LCboss/p/11956169.html
Copyright © 2020-2023  润新知