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搜索指定目录的方法
Apr 29 Python
Python实现简单HTML表格解析的方法
Jun 15 Python
Python的自动化部署模块Fabric的安装及使用指南
Jan 19 Python
python 中的list和array的不同之处及转换问题
Mar 13 Python
python 判断网络连通的实现方法
Apr 22 Python
Python定时任务sched模块用法示例
Jul 16 Python
Cython编译python为so 代码加密示例
Dec 23 Python
详解字符串在Python内部是如何省内存的
Feb 03 Python
Django Xadmin多对多字段过滤实例
Apr 07 Python
python属于跨平台语言码
Jun 09 Python
PyTorch如何搭建一个简单的网络
Aug 24 Python
pytorch 计算Parameter和FLOP的操作
Mar 04 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数据库备份还原类分享
2014/03/20 PHP
thinkPHP实现瀑布流的方法
2014/11/29 PHP
PHP Filter过滤器全面解析
2016/08/09 PHP
用javascript自动显示最后更新时间
2007/03/15 Javascript
利用jquery包将字符串生成二维码图片
2013/09/12 Javascript
jquery获取一组checkbox的值(实例代码)
2013/11/04 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
三个js循环的关键字示例(for与while)
2016/02/16 Javascript
基于jQuery实现简单人工智能聊天室
2017/02/10 Javascript
Angular2的管道Pipe的使用方法
2017/11/07 Javascript
vue-router实现组件间的跳转(参数传递)
2017/11/07 Javascript
vue element-ui 绑定@keyup事件无效的解决方法
2018/03/09 Javascript
原生javascript AJAX 三级联动的实现代码
2018/05/04 Javascript
angularJS开发注意事项
2018/05/26 Javascript
Vue源码探究之状态初始化
2018/11/14 Javascript
微信小程序自定义导航栏实例代码
2019/04/05 Javascript
JavaScript字符串处理常见操作方法小结
2019/11/15 Javascript
[00:47]TI7不朽珍藏III——沙王不朽展示
2017/07/15 DOTA
[01:08:00]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
尝试使用Python多线程抓取代理服务器IP地址的示例
2015/11/09 Python
python 文件操作删除某行的实例
2017/09/04 Python
Python numpy实现二维数组和一维数组拼接的方法
2018/06/05 Python
python如何实现视频转代码视频
2019/06/17 Python
详解Matplotlib绘图之属性设置
2019/08/23 Python
Django xadmin开启搜索功能的实现
2019/11/15 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
python help函数实例用法
2020/12/06 Python
HTML5 虚拟键盘出现挡住输入框的解决办法
2017/02/14 HTML / CSS
日本最大级玩偶手办购物:あみあみ Amiami
2018/04/23 全球购物
测控技术与仪器个人求职信范文
2013/12/30 职场文书
入党积极分子学习两会心得体会范文
2014/03/17 职场文书
竞选体育委员演讲稿
2014/04/26 职场文书
媒矿安全生产承诺书
2014/05/23 职场文书
离婚协议书范本2014
2014/10/27 职场文书
2014年科普工作总结
2014/12/06 职场文书