selenium+python自动化78-autoit参数化与批量上传功能的实现


Posted in Python onMarch 04, 2021

前言

前一篇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");

selenium+python自动化78-autoit参数化与批量上传功能的实现

3.用python代码执行

# 需上传图片的路径
file_path = "D:\\1.png"

# 执行autoit上传文件
os.system("C:\Users\Gloria\Desktop\cmdjpg.exe %s" % file_path) # 你自己本地的

二、批量上传图片

1.方法一:先把要上传的图片放到一个list下,然后for循环

# 把需要上传的图片放到一个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循环

# 循环点击上传图片
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)

三、参考代码

# 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)

到此这篇关于selenium+python自动化78-autoit参数化与批量上传的文章就介绍到这了,更多相关python自动化批量上传内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中模拟enum枚举类型的5种方法分享
Nov 22 Python
Python使用django搭建web开发环境
Jun 09 Python
Python实现对文件进行单词划分并去重排序操作示例
Jul 10 Python
Python引用计数操作示例
Aug 23 Python
Python基于mysql实现学生管理系统
Feb 21 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
Jul 01 Python
pycharm修改文件的默认打开方式的步骤
Jul 29 Python
python科学计算之numpy——ufunc函数用法
Nov 25 Python
python os.path.isfile()因参数问题判断错误的解决
Nov 29 Python
Python 解析pymysql模块操作数据库的方法
Feb 18 Python
Jupyter notebook快速入门教程(推荐)
May 18 Python
用Python创建简易网站图文教程
Jun 11 Python
解决PDF 转图片时丢文字的一种可能方式
Mar 04 #Python
pandas数据分组groupby()和统计函数agg()的使用
Mar 04 #Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 #Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
Mar 04 #Python
python 中 .py文件 转 .pyd文件的操作
Mar 04 #Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
Mar 04 #Python
python 指定源路径来解决import问题的操作
Mar 04 #Python
You might like
一个简单的php实现的MySQL数据浏览器
2007/03/11 PHP
使用Xdebug调试和优化PHP程序之[1]
2007/04/17 PHP
php学习之数据类型之间的转换代码
2011/05/29 PHP
URL编码转换,escape() encodeURI() encodeURIComponent()
2006/12/27 Javascript
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
jquery ajax 检测用户注册时用户名是否存在
2009/11/03 Javascript
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
javascript重复绑定事件造成的后果说明
2013/03/02 Javascript
node.js中的buffer.write方法使用说明
2014/12/10 Javascript
浅谈JavaScript异常处理语句
2015/06/26 Javascript
JS结合bootstrap实现基本的增删改查功能
2016/07/22 Javascript
PHP+jquery+ajax实现分页
2016/12/09 Javascript
谈谈JavaScript数组常用方法总结
2017/01/24 Javascript
微信小程序实现点击按钮修改字体颜色功能【附demo源码下载】
2017/12/05 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
2019/04/15 Javascript
微信小程序 网络通信实现详解
2019/07/23 Javascript
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
python通过pil模块获得图片exif信息的方法
2015/03/16 Python
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
2018/07/11 Python
详解python中递归函数
2019/04/16 Python
python中正则表达式与模式匹配
2019/05/07 Python
python 经典数字滤波实例
2019/12/16 Python
pytorch的batch normalize使用详解
2020/01/15 Python
vscode配置anaconda3的方法步骤
2020/08/08 Python
css3中用animation的steps属性制作帧动画
2019/04/25 HTML / CSS
Harrods美国:英国最大的百货公司
2018/11/04 全球购物
第二层交换机和路由器的区别?第三层交换机和路由器的区别?
2013/05/23 面试题
电子商务专员岗位职责
2013/12/11 职场文书
教师职称自我鉴定
2014/02/12 职场文书
《蜗牛》教学反思
2014/02/18 职场文书
班级旅游计划书
2014/05/03 职场文书
幼儿园健康教育方案
2014/06/14 职场文书
免职证明样本
2014/10/23 职场文书
煤矿百日安全活动总结
2015/05/07 职场文书
贫困证明书范文
2015/06/16 职场文书
Nginx内网单机反向代理的实现
2021/11/07 Servers