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 第一步 hello world
Sep 25 Python
在类Unix系统上开始Python3编程入门
Aug 20 Python
asyncio 的 coroutine对象 与 Future对象使用指南
Sep 11 Python
Sanic框架流式传输操作示例
Jul 18 Python
Python 实现Windows开机运行某软件的方法
Oct 14 Python
在PyCharm中批量查找及替换的方法
Jan 20 Python
使用Python控制摄像头拍照并发邮件
Apr 23 Python
Python实现微信小程序支付功能
Jul 25 Python
pycharm运行scrapy过程图解
Nov 22 Python
如何教少儿学习Python编程
Jul 10 Python
10个python爬虫入门实例(小结)
Nov 01 Python
python 使用OpenCV进行简单的人像分割与合成
Feb 02 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简单开启curl的方法(测试可行)
2016/01/11 PHP
PHP使用fopen与file_get_contents读取文件实例分享
2016/03/04 PHP
php实现的错误处理封装类实例
2017/06/20 PHP
jqPlot jquery的页面图表绘制工具
2009/07/25 Javascript
Javascript select下拉框操作常用方法
2009/11/09 Javascript
为JavaScript提供睡眠功能(sleep) 自编译JS引擎
2010/08/16 Javascript
jquery图片不完全按比例自动缩小的简单代码
2013/07/29 Javascript
DOM基础教程之使用DOM控制表单
2015/01/20 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
JavaScript数据推送Comet技术详解
2016/04/07 Javascript
简单总结JavaScript中的String字符串类型
2016/05/26 Javascript
javascript事件模型介绍
2016/05/31 Javascript
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
2017/07/09 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
纯JS实现的读取excel文件内容功能示例【支持所有浏览器】
2018/06/23 Javascript
在Vue中获取组件声明时的name属性方法
2018/09/12 Javascript
js异步上传多张图片插件的使用方法
2018/10/22 Javascript
Python中实现从目录中过滤出指定文件类型的文件
2015/02/02 Python
Python中模块与包有相同名字的处理方法
2017/05/05 Python
http请求 request失败自动重新尝试代码示例
2018/01/25 Python
对python requests发送json格式数据的实例详解
2018/12/19 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
Web前端绘制0.5像素的几种方法
2017/08/11 HTML / CSS
Charlotte Tilbury澳大利亚官网:英国美妆品牌
2018/10/05 全球购物
瑞典最大的儿童用品网上商店:pinkorblue.se
2021/03/09 全球购物
财务管理专业毕业生求职信范文
2013/09/21 职场文书
财务管理专业应届毕业生求职信
2013/09/22 职场文书
班组长竞聘书
2014/03/31 职场文书
岳庙导游词
2015/02/04 职场文书
婚前保证书范文
2015/02/28 职场文书
2015年乡镇残联工作总结
2015/05/13 职场文书
2016七夕情人节寄语
2015/12/04 职场文书
2016年敬老月活动总结
2016/04/05 职场文书
Nginx服务器如何设置url链接
2021/03/31 Servers
golang http使用踩过的坑与填坑指南
2021/04/27 Golang
go语言中json数据的读取和写出操作
2021/04/28 Golang