博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实现无人工干预的自动上传附件(三)
阅读量:5877 次
发布时间:2019-06-19

本文共 2507 字,大约阅读时间需要 8 分钟。

使用第三方工具AutoIt,实现文件上传

用于测试的HTML代码:

     上传文件 

Browse for a file to upload:

目的:实现操作有一些webdriver无法操作的文件上传对象。

AutoIt工具的使用说明

  1. 下载安装工具

             访问:网址,下载工具包并进行安装。

        2.   编辑操作文件上传框体的AutoIt脚本

         (1)“开始”→“所有程序”→“AutoIt v3”→“SciTE”→“SciTE”命令,启动AutoIt的文本编辑器。

         (2)在编辑器中输入如下脚本:

                   #include <Constants.au3>

                   Send("e:\test.txt")   #使用键盘输入待上传文件的路径

                   Send("{ENTER}")    #发送一个回车键

                   Send("{ENTER}")    #再次发送一个回车键

               说明:调用两次Enter键,主要是解决某些操作系统默认的输入法是中文输入法,输入“e:\test.txt”以后,必须按一下Enter键才能将输入的内容写入路径输入框中,再按一

                        次Enter键,就等价于单击文件打开窗体的“打开”按钮。

          (3)将AutoIt脚本保存为文件名为“test.au3”的文件并存放在指定磁盘上。

                   如下图所示:

                       

           (4)“开始”→“所有程序”→“AutoIt v3”→“Compile script to.exe(x64)”(根据自己的操作系统位数选择正确的位数),调出将AutoIt脚本转换成exe文件的界面。

           (5)在Source路径框中选择上面保存的AutoIt脚本“test.au3”文件, Destination处选择.exe单选项,并在接下来的输入框中设置好生成exe文件的保存路径,其他默认即可。

           (6)单击Convert按钮,将会把AutoIt脚本“test.au3”文件转换成“test.exe”可执行文件。

             如下图所示:

                    

实例代码:

#encoding=utf-8from selenium import webdriverimport unittest import time, os 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.Ie(executable_path = "d:\\IEDriverServer") def test_uploadFileByAutoIt(self): url = "http://127.0.0.1/test_upload_file.html" # 访问自定义网页 self.driver.get(url) try: # 创建一个显示等待对象 wait = WebDriverWait(self.driver, 10, 0.2) # 显示等待判断被测试页面上的上传文件按钮是否处于可被点击状态 wait.until(EC.element_to_be_clickable((By.ID, 'file'))) except TimeoutException, e: # 捕获TimeoutException异常 print traceback.print_exc() except NoSuchElementException, e: # 捕获NoSuchElementException异常 print traceback.print_exc() except Exception, e: # 捕获其他异常 print traceback.print_exc() else: # 查找页面上ID属性值为“file”的文件上传框, # 并点击调出选择文件上传框 self.driver.find_element_by_id("file").click() # 通过Python提供的os模块的system方法执行生成的test.exe文件,实现文件上传 os.system("D:\AutoIt3\SciTE\\test.exe") # 由于AutoIt脚本转换后的可执行文件test.exe可能执行速度比较慢,这里等待5秒,以确保test.exe脚本执行成功 time.sleep(5) # 找到页面上ID属性值为“filesubmit”的文件提交按钮对象 fileSubmitButton = self.driver.find_element_by_id("filesubmit") # 单击提交按钮,完成文件上传操作 fileSubmitButton.click() # 因为文件上传需要时间,所以这里可以添加显示等待场景,判断文件上传成功后,页面是否跳转到文件上传成功的页面。 # 通过EC.title_is()方法判断跳转后的页面的Title值是否符合期望,如果匹配将继续执行后续代码 #wait.until(EC.title_is(u"文件上传成功")) time.sleep(2) def tearDown(self): # 退出IE浏览器 self.driver.quit() if __name__ == '__main__': unittest.main()

转载于:https://www.cnblogs.com/ssj0723/p/9199063.html

你可能感兴趣的文章
MapReduce工作原理流程简介
查看>>
那些年追过的......写过的技术博客
查看>>
小米手机解锁bootload教程及常见问题
查看>>
Python内置函数property()使用实例
查看>>
Spring MVC NoClassDefFoundError 问题的解决方法。
查看>>
CentOS 6.9配置网卡IP/网关/DNS命令详细介绍及一些常用网络配置命令(转)
查看>>
python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列
查看>>
C# 解决窗体闪烁
查看>>
CSS魔法堂:Transition就这么好玩
查看>>
【OpenStack】network相关知识学习
查看>>
centos 7下独立的python 2.7环境安装
查看>>
[日常] 算法-单链表的创建
查看>>
前端工程化系列[01]-Bower包管理工具的使用
查看>>
使用 maven 自动将源码打包并发布
查看>>
Spark:求出分组内的TopN
查看>>
Python爬取豆瓣《复仇者联盟3》评论并生成乖萌的格鲁特
查看>>
关于跨DB增量(增、改)同步两张表的数据小技巧
查看>>
飞秋无法显示局域网好友
查看>>
学员会诊之03:你那惨不忍睹的三层架构
查看>>
vue-04-组件
查看>>