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入门篇之正则表达式
Oct 20 Python
简单介绍Python的Django框架的dj-scaffold项目
May 30 Python
Django框架中方法的访问和查找
Jul 15 Python
pycharm安装图文教程
May 02 Python
python中map()函数的使用方法示例
Sep 29 Python
python遍历一个目录,输出所有的文件名的实例
Apr 23 Python
使用pandas read_table读取csv文件的方法
Jul 04 Python
使用Python如何测试InnoDB与MyISAM的读写性能
Sep 18 Python
Django Aggregation聚合使用方法解析
Aug 01 Python
python 实现从高分辨图像上抠取图像块
Jan 02 Python
python中数字是否为可变类型
Jul 08 Python
python 如何用urllib与服务端交互(发送和接收数据)
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
几种显示数据的方法的比较
2006/10/09 PHP
php 获取页面中指定内容的实现类
2014/01/23 PHP
PHP自毁程序(慎用)
2015/07/09 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
jquery 可排列的表实现代码
2009/11/13 Javascript
JavaScript性能陷阱小结(附实例说明)
2010/12/28 Javascript
jquery实现仿JqueryUi可拖动的DIV实例
2015/07/31 Javascript
在javascript中随机数 math random如何生成指定范围数值的随机数
2015/10/21 Javascript
js图片跟随鼠标移动代码
2015/11/26 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
Underscore源码分析
2015/12/30 Javascript
jquery实现拖动效果
2016/08/10 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
2017/08/11 Javascript
基于iScroll实现内容滚动效果
2018/03/21 Javascript
Node.js Express安装与使用教程
2018/05/11 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
2018/10/09 Javascript
vue项目中使用fetch的实现方法
2019/04/25 Javascript
微信小程序模板消息限制实现无限制主动推送的示例代码
2019/08/27 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
Vue 实现可视化拖拽页面编辑器
2021/02/01 Vue.js
python Django模板的使用方法(图文)
2013/11/04 Python
在Python中使用NLTK库实现对词干的提取的教程
2015/04/08 Python
python集合用法实例分析
2015/05/30 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
物流管理专业毕业生自荐信
2014/03/04 职场文书
施工安全生产承诺书
2014/05/23 职场文书
英语教育专业毕业生求职信
2014/08/28 职场文书
小学师德师风演讲稿
2014/09/02 职场文书
解除聘用合同证明书范本
2014/09/11 职场文书
乡镇干部个人对照检查材料(群众路线)
2014/09/26 职场文书
2014年化妆品销售工作总结
2014/12/01 职场文书
2014年纳税评估工作总结
2014/12/23 职场文书
单位工作证明范本
2015/06/15 职场文书