• selenium+python上传文件


    上传文件控件有两种:一种是input标签,另外一种是非input标签,比如button标签、div标签等

    一、input标签很简单,使用send_keys就可以,只是有时候要用js将元素改为可输入,dr.find_element(By.XPATH, '//div[text()="+上传图片"]').send_keys(pic_path)

    二、非input标签

    我们这里使用WinSpy工具(充当类似F12定位元素的功能),和pywin32工具(操作Windows窗口)

    一)WinSpy工具的安装和使用:

    1.下载WinSpy ,解压即可使用

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

    2.在winspy工具左上角是个聚焦按钮,通过拖动的方式拖动到上传弹出框的对应位置(如文件路径输入框)后松开,winspy界面会显示当前定位的Text文本值(此处为空)和Class属性值(Edit)

     点击下面的【Tree】按钮,可以展示当前元素的上下级。可以看到,Edit父级是ComboBox,ComboBox父级是ComboBoxEx32,ComboBoxEx32父级是#32770,它的父级是Desktop(桌面),所以当前窗口的根节点是#32770。理清关系后,可以进入下面的写代码环节。

    二)安装及使用pywin32

    1.安装pywin32:

    命令行运行:pip install -i https://pypi.douban.com/simple pywin32

    2.导入及使用
    import win32gui
    import win32con

    # 一级窗口"#32770",
    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', "打开(&O)") # 二级

    # 输入文件的绝对路径,点击“打开”按钮
    pt = obj_path + "\\pic\\hua.jpg"
    print(pt)
    win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, pt) # 发送文件路径
    # win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, 'D:\\wuxx\\PycharmProjects\\pythonProject\\hua.jpg') # 发送文件路径
    win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button) # 点击打开按钮'''

  • 相关阅读:
    Scanner类
    每日总结-05-17
    栈的基本操作 出栈与入栈
    Angularjs1.x 项目结构
    【树形dp小练】HDU1520 HDU2196 HDU1561 HDU3534
    [ACM] hdu 1251 统计难题 (字典树)
    Asakura的魔法世界
    distcp导致个别datanode节点数据存储严重不均衡分析
    Redis集群主备模式部署
    java的输入输出流(一)
  • 原文地址:https://www.cnblogs.com/wuxiaoxia/p/16152226.html
Copyright © 2020-2023  润新知