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:UsersGloriaDesktopcmdjpg.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:UsersGloriaDesktopcmdjpg.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:UsersGloriaDesktopcmdjpg.exe %s" % file_name) # 你自己本地的.exe路径 time.sleep(3) ``` 三、参考代码
```python
# coding:utf-8
from selenium import webdriver
import time
import os
# 加载配置文件实现免登录
profileDir = r'C:UsersGloriaAppDataRoamingMozillaFirefoxProfiles1x41j9of.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:UsersGloriaDesktopcmdjpg.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:UsersGloriaDesktopcmdjpg.exe %s" % file_name) # 你自己本地的.exe路径
# time.sleep(3)
```
- Shell编程——Shell中的数学运算
- 如何利用微信监管你的TF训练?
- python 安装spark_Spark环境搭建 (Python)
- MongoDB触发oom-killer的简单处理(一)(r7笔记第54天)
- int与integer的区别
- java 自动装箱与拆箱
- python读取文件——python读取和保存mat文件
- python 利用递归实现全排列
- java中 == 与 equal 的区别
- python基础知识——字符串
- python 实现数据降维推荐系统(附Python源码)
- MYSQL数据导出与导入,secure_file_priv参数设置
- numpy 参数(一) —— np.linalg
- 关于查看dba_data_files的一个小问题(r7笔记第72天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- CentOS 7上搭建 Zabbix4.0,一次性成功,收藏了!
- 超全!我整理一波最常用的开源项目
- 【NLP】竞赛必备的NLP库
- Java NIO Selector 详解
- 【机器学习基础】一文搞懂机器学习里的L1与L2正则化
- 【深度学习】深入理解LSTM
- 短视频商城源码,两种方式实现点击出现弹窗显示
- 【50期】基础考察:ClassNotFoundException 和 NoClassDefFoundError 有什么区别
- MySQL 8.0新特性 — 管理端口
- 从单词嵌入到文档距离 :WMD一种有效的文档分类方法
- 程序员技术选型:写Go还是Java?
- 用python爬虫简单网站却有 “多重思路”--猫眼电影
- 对开发者而言,GitHub Profile可能是比简历更好的求职利器
- R语言中GLM(广义线性模型),非线性和异方差可视化分析
- leetcode树之二叉树的深度