上传文件是比较常见的web功能之一,但webdriver没有提供专门用于上传的方法,如何实现上传操作关键在于上传文件的思路
一般web页面的上传功能的操作需要点击“上传”按钮后打开本地的window窗口,从窗口中选择本地文件进行上传,而webdriver是无法操作Windows控件的,所以对于web页面的上传功能实现有以下两种方法。
1、普通上传:普通的附件上传是将本地文件的路径作为一个值放在input标签中,通过form表单将这个值提交给服务器
2、插件上传:一般是指基于Flash、JavaScript或Ajax等技术所实现的上传功能
Send_keys上传
通过这种方法上传可避免操作Windows控件的步骤。只要找到上传的input标签,那么就基本都可以通过send_keys()方法向其输入一个文件地址来实现上传。如:
from selenium import webdriver
import os
driver = webriver.Chrome()
driver.get('http://www.baidu.com')
#定位上传按钮,添加本地文件
driver.find_element_by_name('file').send_keys('d:/upload_file.txt')
driver.quit()
第三方工具上传
非input标签的上传,则需要借助第三方工具winspy,或者python pywin32和spy++、sendkeys第三方库和autolt
以下是固定的代码,复制即可使用