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(常 ...
随机推荐
- H5新特性之video audio
1.标签 <video src="~~~" autoplay loop controls controlslist="nodownload nofullscreen ...
- exportfs命令
exportfs命令:功能说明 :NFS共享管理 语法格式 exportfs [必要参数][选择参数][目录] 功能描述 exportfs 命令:用于管理NFS(Network File System ...
- python---ORM之SQLAlchemy(5)联合唯一的使用
# coding:utf8 # __author: Administrator # date: // # /usr/bin/env python import sqlalchemy from sqla ...
- Neural Networks and Deep Learning 课程笔记(第三周)浅层神经网络(Shallow neural networks)
3.1 神经网络概述(Neural Network Overview ) (神经网络中,我们要反复计算a和z,最终得到最后的loss function) 3.2 神经网络的表示(Neural Netw ...
- golang error信息转字符串 x := fmt.Sprintf("%s", err)
_, _, ch, err := m.ZkConn.ChildrenW(node) if err != nil { x := fmt.Sprintf("%s", err) if s ...
- Oracle——存储过程的使用
为什么使用存储过程? 存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度. 存储过程的定义: 存储过程(Sto ...
- DCNN models
r egion based RNN Fast RCNN Faster RCNN F-RCN Faster RCNN the first five layers is same as the ZF ne ...
- Linux - 文件操作
touch file # 创建空白文件 rm -rf 目录名 # 不提示删除非空目录(-r:递归删除 -f强制) dos2unix # windows文本转linux文本 unix2dos # lin ...
- Nginx 日志处理
. nginx日志统计独立ip的个数: awk '{print $1}' /access.log | sort | uniq | wc -l . 查询访问最多的前10个ip awk . 查看某段时间的 ...
- logback配置按天产生日志文件
1 依赖Jar包 pom配置 也可以根据自己的版本来 <dependency> <groupId>org.slf4j</groupId> <artifactI ...