python3 + selenium 之文件上传下载
文件上传
文件上传下载的联系html:
uplad.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.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.js"></script>
</html>
打开上面的html长这样:
方法一
如页面的的元素标签是input如下下图:
可直接赋值send_keys输入
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("file:///C:/Users/WeiBing/Desktop/uplad.html")
aaa =driver.find_element_by_xpath("//*[@name='file']")
aaa.send_keys("D:/a.txt")//直接将文件输入
time.sleep(5)
driver.quit()
注意:有些页面是input标签也可能input失败,遇到这种情况也先不要捉急,可尝试将定位的路径再次向顶层移动,如://*[@id='kw']/div/st[2]/input,可尝试//*[@id='sq']/a/abody/div/st[2]/input,有的时候就会出现这种莫名其妙的问题,加一些路径就可以成功找到元素了
方法二
使用AutoIt来完成
下载AutoIt
下载安装完成后点击开始菜单可看到如下菜单
AutoIt Windows Info 用于帮助我们识Windows控件信息。
Compile Script to.exe 用于将AutoIt生成 exe 执行文件。
Run Script 用于执行AutoIt脚本。
SciTE Script Editor 用于编写AutoIt脚本。
1、首先打开AutoIt Windows Info 工具,鼠标点击Finder Tool,鼠标将变成一个小风扇形状的图标,按住鼠标左键拖动到需要识别的控件上。
打开后界面如下:
识别输入框控件
识别打开按钮
通过AutoIt Windows Info 获得以下信息。
窗口的title为“选择要加载的文件”,标题的Class为“#32770”。
文件名输入框的class 为“Edit”,Instance为“1” ,所以ClassnameNN为“Edit1”。
打开按钮的class 为“Button”,Instance为“1” ,所以ClassnameNN为“Button1”。
2、 根据AutoIt Windows Info 所识别到的控件信息打开SciTE Script Editor编辑器,编写脚本。
ControlFocus("打开","","Edit1")
WinWait("[CLASS:#32770]","",10)
ControlSetText("打开","","Edit1", $CmdLine[1]) # $CmdLine[1]是命令行参数用于接收需要上传的文件,跟脚本中的 os.system('D:\\AA.exe D:\\a.txt')对应
Sleep(2000)
ControlClick("打开","","Button1");#如果是下载我们可以找到按钮直接点击
或这样:
ControlFocus("打开","","Edit1")
WinWait("[CLASS:#32770]","",10)
ControlSetText("打开","","Edit1","D:\a.txt")
Sleep(2000)#毫秒
ControlClick("打开","","Button1");
ontrolFocus()方法用于识别Window窗口。WinWait()设置10秒钟用于等待窗口的显示,其用法与WebDriver 所提供的implicitly_wait()类似。ControlSetText()用于向“文件名”输入框内输入本地文件的路径。这里的Sleep()方法与Python中time模块提供的Sleep()方法用法一样,不过它是以毫秒为单位,Sleep(2000)表示固定休眠2000毫秒。ControlClick()用于点击上传窗口中的“打开”按钮。
AutoIt的脚本已经写好了,保存通过菜单栏“Tools”–>“Go” (或按键盘F5)来运行一个脚本吧!注意在运行时如下窗口处于打开状态。
3、脚本运行正常,保存到本地AA.au3,这里保存的脚本可以通过Run Script 工具将其打开运行,但我们的目的是希望这个脚本被Python程序调用,那么就需要将其生成exe程序。打开Compile Script to.exe工具,将其生成为exe可执行文件。
点击“Browse”选择upfile.au3文件,点击“Convert”按钮将其生成为AA.exe程序。
代码示例
from selenium import webdriver
import os import time
driver = webdriver.Chrome() driver.get("file:///C:/Users/WeiBing/Desktop/uplad.html")
driver.find_element_by_xpath("//*[@name='file']").click() #点击上传按钮,会弹出上传框
os.system('D:\\AA.exe D:\\a.txt') #执行前面生成的exe文件,D:\\a.txt上传
time.sleep(5)
driver.quit()
成功
文件下载
参考链接
也可以使用上面上传使用的autoit工具
python3 + selenium 之文件上传下载的更多相关文章
- Selenium2学习-039-WebUI自动化实战实例-文件上传下载
通常在 WebUI 自动化测试过程中必然会涉及到文件上传的自动化测试需求,而开发在进行相应的技术实现是不同的,粗略可划分为两类:input标签类(类型为file)和非input标签类(例如:div.a ...
- web自动化之selenium(三)文件上传
1.上传标签为input #若上传文件的标签为<input>可以直接定位标签,然后send_keys(文件路径)可以直接上传 2.利用第三方软件Autoit上传 1.下载Autoit:ht ...
- Struts的文件上传下载
Struts的文件上传下载 1.文件上传 Struts2的文件上传也是使用fileUpload的组件,这个组默认是集合在框架里面的.且是使用拦截器:<interceptor name=" ...
- Android okHttp网络请求之文件上传下载
前言: 前面介绍了基于okHttp的get.post基本使用(http://www.cnblogs.com/whoislcj/p/5526431.html),今天来实现一下基于okHttp的文件上传. ...
- 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)
1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TC ...
- 艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输)(一)
艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输) 该系统基于开源的networkComms通讯框架,此通讯框架以前是收费的,目前已经免费并开元,作者是英国的,开发时间5年多,框架很稳定. 项 ...
- ssh框架文件上传下载
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- SpringMVC——返回JSON数据&&文件上传下载
--------------------------------------------返回JSON数据------------------------------------------------ ...
- 【FTP】FTP文件上传下载-支持断点续传
Jar包:apache的commons-net包: 支持断点续传 支持进度监控(有时出不来,搞不清原因) 相关知识点 编码格式: UTF-8等; 文件类型: 包括[BINARY_FILE_TYPE(常 ...
随机推荐
- Port Forwarding in Windows
转自:http://woshub.com/port-forwarding-in-windows/ Since Windows XP there is a built-in ability in Mic ...
- authentication failed for xxx错误
现象: 公司windows定期修改过密码后 一直报错.push的时候显示“Authentication Failed for http://x.x.x.x/x/git” 猜想: 发现可能是账号问题. ...
- java元注解 @Retention注解使用
@Retention定义了该Annotation被保留的时间长短: 1.某些Annotation仅出现在源代码中,而被编译器丢弃: 2.另一些却被编译在class文件中,注解保留在class文件中,在 ...
- C# cmd调用外部命令
void test2() { Process process = new Process(); //C:\\Users\\Administrator\\Desktop\\ffmpeg\\bin\\ff ...
- CF28D Don't fear, DravDe is kind
传送门 题意:\(n\)个位置,每个位置有价值\(v_i\)和重量\(p_i\),要选出一些位置,如果要选位置\(i\),那么前面选的重量之和要为\(l_i\),后面选的重量之和要为\(r_i\),求 ...
- ZOC7 for Mac连接CentOS7无法输入中文问题
确定是ZOC7的问题 改为 iTerm2 加 ZSH 能够输入中文了 自己配置profile 慢慢所有的终端都用iTerm2 渐渐放弃ZOC7
- HKE和他的小朋友(矩乘快速幂)
题面: 题目背景: HKE带着\(n\)个小朋友做游戏 题目描述: 现在有n个座位编号为\(1\)至\(n\),这些小朋友也编号\(1\)至\(n\).一开始所有小朋友都坐在相应的座位上.HKE的游戏 ...
- vue插件开发实践与要点
其实就跟组件差不多意思,组件也可以实现相关的效果,但要在用到的地方都引用插件就可以全局注册,不需引用 试着撸一个插件,有2个功能,提示和对话框 网上找了个toast插件的代码,改了改,扩展加了个dia ...
- 【转】Zabbix 3.0 从入门到精通(zabbix使用详解)
[转]Zabbix 3.0 从入门到精通(zabbix使用详解) 第1章 zabbix监控 1.1 为什么要监控 在需要的时刻,提前提醒我们服务器出问题了 当出问题之后,可以找到问题的根源 网站/ ...
- Pycharm 字体大小调整
Pycharm 字体大小调整 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/awyyauqpmy/article/details/79334496P ...