zoukankan      html  css  js  c++  java
  • webdriver高级应用 -无人干预地自动上传文件

    本节主要介绍通过程序代码无人干预地上传文件附件,并进行提交操作。

    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()
    

      

  • 相关阅读:
    visual studio制作代码片段
    制造业项目概念
    C# 语音技术
    特殊地址记录
    [转]sql server 分页
    9-10-双链树-查找-第9章-《数据结构》课本源码-严蔚敏吴伟民版
    9-9-B+树-查找-第9章-《数据结构》课本源码-严蔚敏吴伟民版
    9-8-B树-查找-第9章-《数据结构》课本源码-严蔚敏吴伟民版
    9-7-平衡二叉排序(搜索)树-查找-第9章-《数据结构》课本源码-严蔚敏吴伟民版
    9-6-二叉排序树-查找-第9章-《数据结构》课本源码-严蔚敏吴伟民版
  • 原文地址:https://www.cnblogs.com/aszeno/p/10380761.html
Copyright © 2011-2022 走看看