python自动化上传文件
零基础转行测试交流群631450326
在UI测试中,经常会涉及到文件上传,文件上传一般包含的文件是图片,视频以及如csv,excel,记事本等文件,文件上传的实现大体分为两种,一种是input标签,一种非input标签。
非input如下展示
def upLoad_File(self, filePath):
"""
使用 python 的 win32api,win32con 模拟按键输入,实现文件上传操作。
:param webEle: 页面中的上传文件按钮,是已经获取到的对象
:param filePath: 要上传的文件地址,绝对路径。如:D:\\timg (1).jpg
"""
pyperclip.copy(filePath) # 复制文件路径到剪切板
time.sleep(3) # 等待程序加载 时间 看你电脑的速度 单位(秒)
# 发送 ctrl(17) + V(86)按钮
win32api.keybd_event(17, 0, 0, 0)
win32api.keybd_event(86, 0, 0, 0)
win32api.keybd_event(86, 0, win32con.KEYEVENTF_KEYUP, 0) # 松开按键
win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(1)
win32api.keybd_event(13, 0, 0, 0) # (回车)
win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0) # 松开按键
win32api.keybd_event(13, 0, 0, 0) # (回车)
win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(2)
webEle.click() # 点击上传图片按钮
调用上传文件函数upLoad_File(r'D:\\timg (1).jpg')
input标签上传方式:send_keys()自动化上传
简单的input标签上传方式要使用自动化上传不难,先定位到上传按钮,然后send_keys把路径作为值给传进去就好了。
例如我们找到那个控制上传的input标签,例如<input type="file" name="upload">这样的,然后对这个按钮进行定位再传路径:
driver.find_element_by_name("upload").send_keys('D:\\filename.txt')
这种方式很简单,只要有input标签一般都可以通过这种方式简单的一条语句就可以实现。