selenium+python自动化78-autoit参数化与批量上传

前言 前一篇autoit实现文件上传打包成.exe可执行文件后,每次只能传固定的那个图片,我们实际测试时候希望传不同的图片。 这样每次调用的时候,在命令行里面加一个文件路径的参数就行。 一、命令行参数 1.参数化传入的参数,可以通过autoit的命令行参数: ``` myProg.exe param1 “This is a string parameter” 99 ``` 在脚本中,可用以下变量获取命令行参数: ``` $CmdLine[0] ; = 3 $CmdLine[1] ; = param1 $CmdLine[2] ; = "This is a string parameter" $CmdLine[3] ; = 99 $CmdLineRaw ; = 'param1 "This is a string parameter" 99' ``` - $CmdLine[0] 获取的是命令行参数的总数,在上例中$CmdLine[0]=3 - $CmdLine[1]~$CmdLine[63] 获取的是命令行参数第1到第63位,这个方式最多只能获取63个参数,不过正常情况下是足够用的 - $CmdLineRaw 获取的是未拆分的所有参数,是一个长字符串,这种情况下不局限与63个参数 2.将如下代码保存为.exe文件后(文件名随便取一个:cmdjpg.exe),在cmd执行一次,看是否成功 ``` WinActivate("文件上传"); ControlSetText("文件上传", "", "Edit1", $CmdLine[1] ); Sleep(2000); ControlClick("文件上传", "", "Button1"); ```

3.用python代码执行 ```python # 需上传图片的路径 file_path = "D:\\1.png" # 执行autoit上传文件 os.system("C:\Users\Gloria\Desktop\cmdjpg.exe %s" % file_path) # 你自己本地的 ``` 二、批量上传图片 1.方法一:先把要上传的图片放到一个list下,然后for循环 ```python # 把需要上传的图片放到一个list下 all_png = ["D:\\1.png", "D:\\2.png", "D:\\3.png", "D:\\4.png"] # 循环点击上传图片 for i in all_png: # 1点开编辑器图片 # 2点开文件上传按钮 # 执行autoit上传文件 os.system("C:\Users\Gloria\Desktop\cmdjpg.exe %s" % i) # 你自己本地的.exe路径 time.sleep(3) ``` 2.方法二:把要上传的图片编号,如:0.png , 1.png, 2.png这种(从0开始编号),放到同一目录下,然后for循环 ```python # 循环点击上传图片 for i in range(4): # 1点开编辑器图片 # 2点开文件上传按钮 # 文件名 file_name = "D:\\%s.png" % i # 参数化路径名称 # 执行autoit上传文件 os.system("C:\Users\Gloria\Desktop\cmdjpg.exe %s" % file_name) # 你自己本地的.exe路径 time.sleep(3) ``` 三、参考代码

```python
# coding:utf-8
from selenium import webdriver
import time
import os
# 加载配置文件实现免登录
profileDir = r'C:\Users\Gloria\AppData\Roaming\Mozilla\Firefox\Profiles\1x41j9of.default'  # 你自己电脑的配置文件路径,不要抄我的
profile = webdriver.FirefoxProfile(profileDir)
driver = webdriver.Firefox(profile)
driver.implicitly_wait(30)
driver.get("http://www.cnblogs.com/yoyoketang/")
driver.find_element_by_link_text("新随笔").click()
time.sleep(3)

# 方法一:把需要上传的图片放到一个list下
all_png = ["D:\\1.png", "D:\\2.png", "D:\\3.png", "D:\\4.png"]

for i in all_png:
    # 点开编辑器图片
    driver.find_elements_by_css_selector("img.mceIcon")[0].click()
    time.sleep(3)
    # 定位所有iframe,取第二个
    iframe = driver.find_elements_by_tag_name('iframe')[1]
    # 切换到iframe上
    driver.switch_to_frame(iframe)
    # 点开文件上传按钮
    driver.find_element_by_name('file').click()
    time.sleep(3)
    # 执行autoit上传文件
    print i
    os.system("C:\Users\Gloria\Desktop\cmdjpg.exe %s" % i)  # 你自己本地的.exe路径
    time.sleep(3)
    driver.switch_to_default_content()  # 切回到主页面


# # 方法二:循环点击上传图片
# for i in range(4):
#     # 1点开编辑器图片
# 
#     # 2点开文件上传按钮
# 
#     # 文件名
#     file_name = "D:\\%s.png" % i  # 参数化路径名称
# 
#     # 执行autoit上传文件
#     os.system("C:\Users\Gloria\Desktop\cmdjpg.exe %s" % file_name)  # 你自己本地的.exe路径
#     time.sleep(3)

```

原文发布于微信公众号 - 从零开始学自动化测试(yoyoketang)

原文发表时间:2017-10-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏贾鹏辉的技术专栏@CrazyCodeBoy

Windows平台搭建React Native开发环境

尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://www.devio.org) 告诉大家一个好消息,为大家精心准备的React N...

2914
来自专栏大闲人柴毛毛

架构高性能网站秘笈(五)——Web组件分离

什么是Web组件? 网站的静态网页HTML、JavaScript脚本、CSS样式、图片、动态数据称为网站的Web组件。也就是说,一个Web应用由各种各样的We...

3928
来自专栏疯狂的小程序

微信小程序开发探索之路

项目起始时间:2017-11-25 前端人数: 3 页面数: 6 一期上线时间:2018-01-16 在我们开发的过程中,小程序的生态也不断变化。例如 最开始不...

2597
来自专栏网络

那些年,我们用过的fiddler

在测试中,不管是做手工测试,还是接口测试,我们都需要查看后端返回的数据。有的时候,我们也需要调试,或者mock一下后端的返回,来验证前端是否达到预期。 为了捕获...

18310
来自专栏前端说吧

Compass(更新中。。。)

2476
来自专栏腾讯Bugly的专栏

打造“微信小程序”组件化开发框架

导语 Bugly 之前发了一篇关于微信小程序的开发经验分享,小伙伴们在公众账号后台问了很多关于小程序开发方面的问题,精神哥在查阅相关内容的时候,发现了龚澄同学自...

4613
来自专栏FreeBuf

前端黑魔法之远程控制地址栏

由于今天看到一篇文章《危险的 target=”_blank” 与 “opener”》,里面提到了一个老知识点,就是target=”_blank”的时候,新打开的...

3544
来自专栏木子昭的博客

OneTab一键分享Chrome当前打开的所有标签页

当你发现自己有太多的标签页时,单击OneTab图标,所有标签页会转换成一个列表,当你需要再次访问这些标签页时,点击OneTab图标唤出列表,点击列表恢复标签页

2133
来自专栏马涛涛的专栏

webpack@3简单使用

这篇博客用的是webpack3的版本,作为入门理解学习 非原创,只为学习记录。博客大部分内容引用来源如下:

1846
来自专栏九彩拼盘的叨叨叨

Web Workers 介绍

有时候,我们写的脚本需要执行一些耗时的大计算量的操作。在脚本执行过程中,浏览器会出现冻结用户界面的情况(用户对页面进行操作,但浏览器没有响应)。

842

扫码关注云+社区