python-UI文件上传

2021-03-14  本文已影响0人  lily_5945

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

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)
上一篇 下一篇

猜你喜欢

热点阅读