【通过selenium完成文件上传】

上传操作

通常我们网页上的上传分为input标签和非input标签,其中input标签直接可以通过Web Driver中的send_keys方法,进行直接输入需要上传文件地址。

非input标签的话需要借助外部工具进行辅助我们完成上传操作。

input标签

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('E:\\web\\Upload.html')
time.sleep(2)
driver.find_element_by_name('img').send_keys('E:\\web\\123.jpg')

非input标签使用pywinauto或者pywutogui第三方库
一、pywinauto
1、pip install pywinauto

2、使用(windows)
from pywinauto.keyboard import SendKeys
send_keys(‘文件路径1’)
send_keys(‘文件路径2’)
send_keys(‘{ENTER}’)

二、pyautogui
1、pip install pyautogui
2、使用(跨平台、windows、linux、mac、文件路径不能有中文、不支持多文件上传)
2.1、pyautogui.typewrite(r’D:\fk88.png’) 选择文件
2.2、pyautogui.press(keys=‘enter’,presses=3)确认上传
参数:1、keys:按键; 2、presses=1:重复按多少次; 3、interval=0.0:间隔(浮动,可选):每次按下之间的秒数

注意点
一定要等待弹框出现之后再进行上传操作。

3、mac环境下使用pyautogui点击无效

from selenium import webdriver
import time
import pywinauto
driver = webdriver.Chrome()
driver.get('https://www.jq22.com/yanshi17984')
driver.switch_to.frame("iframe")
driver.find_element_by_class_name('addImg').click()
time.sleep(2)
# 通过窗口打开
app = pywinauto.Desktop()
# 通过弹框名称进入控件中
win = app['打开']
# 输入上传图片的地址
win['Edit'].type_keys(r'E:\web\123.jpg')
#点击打开按钮
win['Button'].click()
import time
import pyautogui
from pywinauto.keyboard import SendKeys
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get(url="https://www.baidu.com")
time.sleep(2)
# 点相机按钮
driver.find_element(By.XPATH, '//span[@class="soutu-btn"]').click()
time.sleep(1)
# 点文件上传的按钮。弹出window上传窗口
driver.find_element(By.XPATH, '//div[@class="upload-wrap"]').click()

# 特别注意:要用sleep等一下。等下弹窗完全出现。
time.sleep(1)
# 使用pyautogui输入文件地址,上传。
pyautogui.typewrite(r'D:\shop.png')
pyautogui.press(keys='ENTER', presses=3)  # ENTER 大小写都可以

# # 使用pywinauto
# SendKeys(r'D:\shop.png')
# SendKeys('{ENTER}')

time.sleep(7)
driver.quit()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值