美文网首页
python-UI文件上传

python-UI文件上传

作者: lily_5945 | 来源:发表于2021-03-14 21:42 被阅读0次

    我们在使用python做web自动化的过程中,经常会遇到文件上传的操作。对于文件上传存在input输入框情况,可以直接定位input元素,使用send_keys(filepath)方法实现。对于没有input输入框的文件上传,则需要借助第三方工具,在上传文件时打开系统窗口。以下是两个上传文件操作比较简单的工具

    • windows系统:pywinauto库

      安装:pip install pywinauto
      导入:from pywinauto.keyboard import send_keys
    • mac/Linux/window通用:pyautogui 跨平台

      python3.8环境:先安装依赖 pip install pillow==6.2.2,再安装 pip install pyautogui
      非python3.8环境:直接 pip install pyautogui
      导入:import pyautogui

    1,input元素使用send_keys()方法

    from selenium import webdriver
    import time
    
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)
    URL = 'https://xxxx/kk-form/fs/fm/form/161519068236342881d3774ec5428571/fill'
    driver.get(URL)
    # 获取上传组件的元素
    f = driver.find_element('xpath', "(//input[@class='van-uploader__input'])[1]")
    # 使用send_keys直接发送文件路径即可
    f.send_keys(r'/Users/lili/Documents/weixin.jpeg')
    time.sleep(5)
    driver.quit()
    

    2,非input元素,window方法:使用pywinauto库

    import pyautogui as pyautogui
    from pywinauto.keyboard import send_keys
    from selenium import webdriver
    import time
    
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)
    URL = 'https://xxxx/kk-form/fs/fm/form/161519068236342881d3774ec5428571/fill'
    driver.get(URL)
    f = driver.find_element('xpath', "(//input[@class='van-uploader__input'])[1]")
    # 触发点击事件,让系统的弹框弹出来
    f.click()
    # 等待,因为弹框弹出来需要时间
    time.sleep(1)
    # 这里是pywinauto 的send_keys 方法
    send_keys(r'/Users/lili/Documents/weixin.jpeg')
    # 使用return提交
    send_keys('{VK_RETURN}')
    

    3,非input元素,mac/Linux/window的通用方法:pyautogui库

    from selenium import webdriver
    import pyautogui
    import time
    
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)
    URL = 'https://xxxx/kk-form/fs/fm/form/161519068236342881d3774ec5428571/fill'
    driver.get(URL)
    f = driver.find_element('xpath', "(//input[@class='van-uploader__input'])[1]")
    # 触发点击事件,让系统的弹框弹出来
    f.click()
    time.sleep(1)
    # 写入路径
    pyautogui.write(r'/Users/lili/Documents/weixin.jpeg')
    # 敲回车:相当于点击【打开】按钮,需要敲2次,避免失败
    pyautogui.press('enter', 2)
    

    相关文章

      网友评论

          本文标题:python-UI文件上传

          本文链接:https://www.haomeiwen.com/subject/wtcccltx.html