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 (1)
Oct 31 Python
Python实现将DOC文档转换为PDF的方法
Jul 25 Python
Python遍历文件夹和读写文件的实现代码
Aug 28 Python
Python读取图片属性信息的实现方法
Sep 11 Python
windows上安装Anaconda和python的教程详解
Mar 28 Python
Python基于列表模拟堆栈和队列功能示例
Jan 05 Python
Python基于matplotlib实现绘制三维图形功能示例
Jan 18 Python
Python实现读取Properties配置文件的方法
Mar 29 Python
python对视频画框标记后保存的方法
Dec 07 Python
基于python cut和qcut的用法及区别详解
Nov 22 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
Feb 07 Python
python 实现逻辑回归
Dec 30 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开发入门教程之面向对象
2006/12/05 PHP
PHP逐行输出(ob_flush与flush的组合)
2012/02/04 PHP
tp5框架内使用tp3.2分页的方法分析
2019/05/05 PHP
JavaScript 新手24条实用建议[TUTS+]
2009/06/21 Javascript
jquery ajax return没有返回值的解决方法
2011/10/20 Javascript
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
JavaScript地图拖动功能SpryMap的简单实现
2013/07/17 Javascript
JSON无限折叠菜单编写实例
2013/12/16 Javascript
innerHTML在IE中报错解决方案
2014/12/15 Javascript
浅谈jQuery.easyui的datebox格式化时间
2015/06/25 Javascript
BootStrap响应式导航条实例介绍
2016/05/06 Javascript
jQuery设置单选按钮radio选中/不可用的实例代码
2016/06/24 Javascript
vue.js入门教程之绑定class和style样式
2016/09/02 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
jquery中封装函数传递当前元素的方法示例
2017/05/05 jQuery
总结js中的一些兼容性易错的问题
2017/12/18 Javascript
详解vue2.0 不同屏幕适配及px与rem转换问题
2018/02/23 Javascript
微信小程序基于picker实现级联菜单
2019/02/15 Javascript
vant 解决tab切换插件标题样式自定义的问题
2020/11/13 Javascript
详细介绍Python函数中的默认参数
2015/03/30 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
基于Python在MacOS上安装robotframework-ride
2018/12/28 Python
基于Django统计博客文章阅读量
2019/10/29 Python
利用Python脚本批量生成SQL语句
2020/03/04 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
python之随机数函数的实现示例
2020/12/30 Python
Marlies Dekkers内衣荷兰官方网店:荷兰奢侈内衣品牌
2020/03/27 全球购物
Woods官网:加拿大最古老、最受尊敬的户外品牌之一
2020/09/12 全球购物
社区工作者思想汇报
2014/01/13 职场文书
残疾人创业典型事迹
2014/02/01 职场文书
运动会入场式解说词
2014/02/18 职场文书
欢度春节标语
2014/07/01 职场文书
自信主题班会
2015/08/14 职场文书
体育教师教学随笔
2015/08/15 职场文书
领导莅临指导欢迎词
2015/09/30 职场文书
浅析MySQL如何实现事务隔离
2021/06/26 MySQL