Python+selenium(Autolt实现上传)
AutoIt是一个使用类似BASIC脚本语言的免费软件,被设计用来进行Windows GUI的自动化测试。它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务。
此次小编介绍的是利用AutoIT编写合适的脚本,然后将脚本编译成可执行文件,在自动化实现时,直接调用此脚本实现文件上传。
案例:从编写好的upfile.html页面完成文件上传操作。
upfile.html
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>upload_file</title>
<link href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet"/>
</head>
<body>
<div class="row-fluid">
<div class="span6 well">
<h3>upload_file</h3>
<input type ="file" name ="file" />
</div>
</div>
</body>
<script src="http://cdn.bootstraps.com/bootstrap/3.3.0/css/bootstrap.min.js"></script>
</html>
1.AutoIt下载安装
官方网址:https://www.autoitscript.com/site/
从网站上下载并安装完成后,可以看到如图所示:
AutoIt v3菜单介绍:
AutoIt Windows Info:用于识别Windows控件信息
Compile Script to.exe:用于将AutoIt生成exe执行文件
Run Script:用于执行AutoIt脚本
SciTE ScriptEditor:用于编写AutoIt脚本
2.浏览器打开upfile.html,点击“选择文件”按钮,然后打开AutoIt Windows Info工具,鼠标单击Finder Tool,看到一个类似小风扇的图标,按住鼠标左键,拖动到要识别的控件上(文件名输入框以及“打开按钮”)
我们可以通过AutoIt Windows Info获得以下信息:
窗口title:“文件上传”,标题class:#32770
文件名输入框class:“Edit”,Instance:“1”,ClassnameNN:“Edit1”
打开按钮class:“Button”,Instance:“1”,ClassnameNN:“Button1”
3.根据AutoIt Windows Info的信息,打开SciTE Script Editor编辑器,编写AutoIt脚本
ControlFocus("文件上传", "","Edit1")
WinWait("[CLASS:#32770]","",);
ControlSetText("文件上传", "", "Edit1", "D:\upload_file.txt");
Sleep();
ControlClick("文件上传", "","Button1");
脚本附注;
ControlFocus ( "title", "窗口文本", controlID): 设置输入焦点到指定窗口的某个控件上
WinWait ( "title题" , "窗口文本" , 超时时间 ): 暂停脚本的执行直至指定窗口存在(出现)为止
ControlSetText ( "title", "窗口文本", controlID, "新文本" ): 修改指定控件的文本
Sleep ( 延迟 ): 使脚本暂停指定时间段
ControlClick ( "title", "窗口文本", 控件ID , 按钮 , 点击次数 ) : 向指定控件发送鼠标点击命令
编写好脚本后,可以运行看看,通过“Tools”-->“Go”,或者“F5”。(注意,运行时,文件上传窗口必须打开)
4.保存脚本为“upfile.au3”文件,然后打开Compile Script to.exe工具,将其生成exe可执行文件。
点击“Browse”,选择“upfile.au3”文件,再点击“Convert”按钮,提示“Completed”即生成成功。
5.打开Pychorm,编辑Python代码
from selenium import webdriver
from time import sleep
import os driver = webdriver.Firefox() # 打开上传功能页面
driver.get(r'E:\python_script\Webdriver\upfile.html') # 单击打开上传窗口
driver.find_element_by_name("file").click()
# 调用upfile.exe程序
os.system(r"E:\python_script\Webdriver\upfile.exe")
sleep(3) driver.quit()
运行脚本,就可以实现文件上传。
Python+selenium(Autolt实现上传)的更多相关文章
- python+selenium:解决上传文件<input type='file'>标签属性被css的visibility隐藏导致无法定位元素的问题
要想上传文件,需要找到在HTML中<input type="file" />这个标签,有它就可以利用send_keys上传文件,不过这里的<input>元素 ...
- 【python+selenium自动化】基于Autolt实现上传
在UI自动化过程中,总会遇到文件上传的操作,一般的,标签为input,可以直接使用sendkeys 如果他仅仅是一个button,那则无法直接sendkeys,则需要用到autoIT这个工具 基于Au ...
- selenium+python自动化77-autoit文件上传
前言 关于非input文件上传,点上传按钮后,这个弹出的windows的控件了,已经跳出三界之外了,不属于selenium的管辖范围(selenium不是万能的,只能操作web上元素).autoit工 ...
- selenium+python自动化77-autoit文件上传【转载】
前言 关于非input文件上传,点上传按钮后,这个弹出的windows的控件了,已经跳出三界之外了,不属于selenium的管辖范围(selenium不是万能的,只能操作web上元素).autoit工 ...
- selenium+python-autoit文件上传
前言 关于非input文件上传,点上传按钮后,这个弹出的windows的控件了,已经跳出三界之外了,不属于selenium的管辖范围(selenium不是万能的,只能操作web上元素).autoit工 ...
- web自动化之selenium(三)文件上传
1.上传标签为input #若上传文件的标签为<input>可以直接定位标签,然后send_keys(文件路径)可以直接上传 2.利用第三方软件Autoit上传 1.下载Autoit:ht ...
- 七牛云存储Python SDK使用教程 - 上传策略详解
文 七牛云存储Python SDK使用教程 - 上传策略详解 七牛云存储 python-sdk 七牛云存储教程 jemygraw 2015年01月04日发布 推荐 1 推荐 收藏 2 收藏,2.7k ...
- python Django之文件上传
python Django之文件上传 使用Django框架进行文件上传共分为俩种方式 一.方式一 通过form表单进行文件上传 #=================================== ...
- python接收html页面上传的文件
使用的 flask, 没有安装的先安装 pip install flask 示例代码:示例没有自动创建静态文件夹,需要自己在同级 创建一个名为 static 的文件夹来存放上传的文件 示例展示为图片 ...
- Python 基于Python实现Ftp文件上传,下载
基于Python实现Ftp文件上传,下载 by:授客 QQ:1033553122 测试环境: Ftp客户端:Windows平台 Ftp服务器:Linux平台 Python版本:Python 2.7 ...
随机推荐
- Codeforces Round #261 (Div. 2) E
Description Pashmak's homework is a problem about graphs. Although he always tries to do his homewor ...
- Linux Ubuntu 14.04 LTS下VirtualBox连接USB
1.环境 主机:Ubuntu 14.04 LTS 虚拟机:Windows 7 专业版本 VirtualBox: 图形用户界面版本 5.1.8 r111374 (Qt5.6.1) 2.在主机上给Virt ...
- Contextual Action bar(3) 两个示例
一.通过activity启动Context Action Bar 1.主java public class ActivityActionModeFrgmt extends Fragment imple ...
- 在 CentOS 环境下安装 .NET Core
安装步骤: 参见官网 CentOS 会报以下错误: Error downloading packages: dotnet-runtime-2.2-2.2.4-1.x86_64: [Errno 256] ...
- Super Mario 树状数组离线 || 线段树
Super Mario Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- cocos_js写文件
var writablePath = jsb.fileUtils.getWritablePath(); writablePath += "cocos/data/"; var fil ...
- js 获取最后一个字符
方法一: str.charAt(str.length - 1) 方法二: str.subStr(str.length-1,1) 方法三: var str = "123456" ...
- ubuntu下php安装目录说明
php当前安装目录 /etc/php5/ apache2: 采用APACHE2HANDLER启动 cli: 采用命令启动 fpm php-fpm启动 fpm2 php-fpm多实例 m ...
- sql地址寻路算法(省市区路)
最近无意翻开4年前做过的一个功能,就是搜集全国各城市各个区(县)的路(XX路.XX道.XX街.XX镇.XX乡.XX屯.XX村.XX社).众所周知,我们都可以在网上找到省.市.区(县)这三级联动的数据, ...
- Ubuntu 16.04 LTS: apt-get update 失败处理 Aborted (core dumped)
在Ubuntu 16.04运行sudo apt-get update出现如下错误: rogn@ubuntu:~$ sudo apt-get update Get:1 http://us.archive ...