zoukankan      html  css  js  c++  java
  • selenium中元素操作之上传操作(六)

    上传操作分为两种情况:

    1、input标签上传

    如果是input可以直接输入路径的,那么直接调用send_keys输入路径,和前边的元素操作类似,在这里不再过多的赘述。

    2、非input标签上传

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

    这里我们用python中的第三方库pywin32库,识别对话框句柄,进而进行上传操作

    首先安装第三方库:pip install pywin32

    借助winspy来辅助定位,winspy下载地址:https://sourceforge.net/projects/winspyex/

    winspy工具使用的是绝对定位,和selenium中的元素定位方式不同

    通过借助winspy工具定位出了对应元素的路径,就可以通过pywin32库来实现上传操作啦!

    1、filePath是上传文件所在的绝对路径

    2、如果你的浏览器是谷歌那么不用管,如果是其他的浏览器,看你弹出上传窗口的左上角的名字是什么,写入到else里的title=" "里边。

    3、遇到Windows窗口上传的元素定位时,直接调用这个方法就可以:upload(C:文件上传.txt)

    比如火狐浏览器与谷歌不同,它的title="文件上传"

    import win32gui
    import win32con
    
    
    def upload(filePath, browser_type="chrome"):
        '''
        通过pywin32模块实现文件上传的操作
        :param filePath: 文件的绝对路径
        :param browser_type: 浏览器类型(默认值为chrome)
        :return:
        '''
        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)  # 点击打开按钮
  • 相关阅读:
    【总结整理】javascript的函数在if中调用时是否加括号---与.net的不同之处
    【总结整理】javascript的函数调用时是否加括号
    【总结整理】JavaScript的DOM事件学习(慕课网)
    关于overflow:hidden (转)
    CSS
    HTML
    jQuery
    函数
    装饰器
    python的条件与循环1
  • 原文地址:https://www.cnblogs.com/xingyunqiu/p/11558936.html
Copyright © 2011-2022 走看看