Selenium 封装了现成的文件上传操作。但是随着现代前端框架的发展,文件上传的方式越来越多样。而有一些文件上传的控件,要做自动化控制会更复杂一些。

一、当上传文件元素为 input type=”file” 时,即可使用元素上传方法

例如:
input = driver.find_element('id', 'kw') input.send_keys(r'D:\学习资料\123.txt')

二、当上传文件元素不为 input 时,可使用 pywinauto 来进行上传文件操作。

1、单个文件
例如:
from pywinauto.keyboard import send_keys import time # 首先获取到可点击的元素 my_file = driver.find_element('id', 'my_file') # 进行点击操作,以打开windows选择文件弹窗 my_file.click() # 设置一个硬等待时间,以防万一 time.sleep(2) # 直接调用pywinauto类的send_keys方法上传文件 send_keys(r'D:\学习资料\1.txt') # 确认提交 send_keys('{VK_RETURN}')
2、多个文件
例如:
from pywinauto.keyboard import send_keys import time # 首先获取到可点击的元素 my_file = driver.find_element('id', 'my_file') # 进行点击操作,以打开windows选择文件弹窗 my_file.click() # 设置一个硬等待时间,以防万一 time.sleep(2) # 直接调用pywinauto类的send_keys方法上传文件 send_keys(r'D:\学习资料\1.txt') send_keys(r'D:\学习资料\2.txt') # 确认提交 send_keys('{VK_RETURN}')
3、如果以上 pywinauto | send_keys 因为路径报错,可使用以下方法解决
例如:
from pywinauto.keyboard import Desktop import time # 首先获取到可点击的元素 my_file = driver.find_element('id', 'my_file') # 进行点击操作,以打开windows选择文件弹窗 my_file.click() # 设置一个硬等待时间,以防万一 time.sleep(2) # 直接调用pywinauto类的Desktop方法上传文件 # 先找到并定位弹出的窗口 obj = Desktop() windows = obj['打开'] # 在输入框中输入路径 windows['Edit'].type_keys(r'D:\学习资料\1.txt') # 提交 windows('Button').click()