上传文件

 

上传文件

input标签

sand_keys() :实现上传(上传为input标签)

sand_keys()括号里输入本地文件路径的方式实现文件上传功能

input标签

input标签,上传方法要借助Autolt工具或者SendKeys第三方库

测试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>

Autolt

下载安装autolt

下载Autolt官方网站:https://www.autoitscript.com/site/

 

AutoIT Windows Info : 用于识别window空间信息

Compile Script to .exe : 用于将AutoIT生成exe执行文件

Run Script : 用于执行AutoIT脚本

SciTE Script Editor : 用于编写AutoIT脚本

元素定位

1.首先打开 AutoIt Windows Info 工具,鼠标点击 Finder Tool,鼠标将变成一个小风扇形状的图标,按住鼠标左键拖动到需要识别的控件上。 

窗口的Title文件上传”,标题的Class“#32770”

文件名输入框的Class “Edit”Instance“1” ,所以ClassnameNN“Edit1”

打开按钮的Class “Button”Instance“1” ,所以ClassnameNN“Button1”

注:不通浏览器下对应参数值不同,必须在特定浏览器下执行特定浏览器的参数才能达到特定的效果

脚本编写

1.根据 AutoIt Windows Info 所识别到的控件信息打开 SciTE Script Editor 编辑器,编写脚本。 

 

ControlFocus("文件上传", "","Edit1")

WinWait("[CLASS:#32770]","",10)

ControlSetText("文件上传", "", "Edit1", "C:UsersyueliDesktop.html")

Sleep(2000)

ControlClick("文件上传", "","Button1");

ControlFocus()方法用于识别 Window 窗口。

WinWait()设置 10 秒钟用于等待窗口的显示,其用法与
WebDriver 所提供的 implicitly_wait()类似。

ControlSetText()用于向“文件名”输入框内输入本地文件的路径。

Sleep()方法与 Python time 模块提供的 Sleep()方法用法一样,不过它是以毫秒为单位,Sleep(2000)表示固定休眠 2000 毫秒。

ControlClick()用于点击上传窗口中的“打开”按钮。 

2.AutoIt 的脚本已经写好了保存一下,可以通过菜单栏“Tools”-->“Go” (或按键盘 F5)来运行一个脚本吧!注意在运行时上传窗口当前处于打开状态。 

脚本运行正常,将其保存为 xxx.au3,这里保存的脚本可以通过 Run Script 工具将其打开运行

生成exe文件

我们的目的是希望这个脚本被 Python 程序调用,那么就需要将其生成 exe 程序。打开 Compile Script to.exe工具,将au3文件生成为 exe 可执行文件。 

下面就是通过自动化测试脚本调用 file.exe 程序实现上传了。 

参数化

因为打包的exe文件把文件路径给写死了,每次只能上传固定地址的文件,我们实际测试时候希望传不同文件地址,这样就需要参数化文件路径了。想要参数化传入的参数,可以通过autoit的命令行参数

在脚本中,可用以下变量获取命令行参数

$CmdLine[0] :获取的是命令行参数的总数,

$CmdLine[1]~$CmdLine[63] :获取的是命令行参数第1到第63位,这个方式最多只能获取63个参数,不过正常情况下是足够用的
$CmdLineRaw 获取的是未拆分的所有参数,是一个长字符串,这种情况下不局限与63个参数

接上面实例继续,将文件地址改为参数化,代码如下

ControlFocus("文件上传", "","Edit1")

WinWait("[CLASS:#32770]","",10)

ControlSetText("文件上传", "", "Edit1", $CmdLine[1])

Sleep(2000)

ControlClick("文件上传", "","Button1");

生成exe文件后继续

下面就是通过自动化测试脚本调用.exe 程序实现上传了。 

os.system() : 传入一个字符串参数,中间用空格隔开,前面是exe文件地址 后面是要上传的文件地址

SendKeys

首先要先安装SendKeys

1.如果安装pip,直接pip install SendKeys

2.安装包下载地址:https://pypi.python.org/pypi/SendKeys,

直接下载zip安装包,进入解压后的目录,地址栏输入cmd,进入dos在命令行,输入python setup.py install回车,自动安装

如果安装过程中提示Get it from http://aka.ms/vcpython27 如下图,直接按照这个地址下载文件,傻瓜式的安装就可以了

 

原文地址:https://www.cnblogs.com/yueli85627/p/9173376.html