本节主要介绍通过程序代码无人干预地上传文件附件,并进行提交操作。
1、使用send_keys方法上传文件
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/2/14 18:48 # @Author : solo # @Site : # @File : webdriver_11_7.py # @Software: PyCharm from selenium import webdriver import unittest import time import traceback from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import TimeoutException,NoSuchElementException class TestDemo(unittest.TestCase): def setUp(self): #启动浏览器 self.driver = webdriver.Firefox() def test_uploadFileBySendKeys(self): url = "d:\uploadFile.html" #访问自定义网页 self.driver.get(url) try: #创建一个显式等待对象 wait = WebDriverWait(self.driver,10,0.2) #显式等待判断被测试页面上的上传文件按钮是否处于可被单击状态 wait.until(EC.element_located_to_be_clickable((By.ID,'file'))) except TimeoutException,e: #捕获TimeoutException异常 print traceback.print_exc() except NoSuchElementException,e: #捕获NoSuchElement异常 print traceback.print_exc() except Exception,e: #捕获其他异常 print traceback.print_exc() else: #查找页面上ID属性值为‘file’的文件上传框 fileBox = self.driver.find_element_by_id("file") #在文件上传框的路径框里输入要上传的文件路径 fileBox.send_keys("c:\test.txt") #暂停查看上传的文件 time.sleep(4) #找到页面上ID属性值为“filesubmit”的文件提交按钮对象 fileSubmitButton = self.driver.find_element_by_id("filesubmit") #单击提交按钮,完成文件上传操作 fileSubmitButton.click() #因为文件上传需要时间,所以这里可以添加显式等待场景, #判断文件上传成功后,页面是否跳转到文件上传成功的页面 #通过EC.title_is()方法判断跳转后的页面的Title #值是否符合期望,如果匹配将继续执行后续代码 #如果时间了parse_file.jsp页面,并且可以成功调转, #可以将下面代码取消注释,断言文件上传成功 #wait.until(EC.title_is(u"文件上传成功")) def tearDown(self): #退出浏览器 self.driver.quit() if __name__ == "__main__": unittest.main()