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环境下搭建属于自己的pip源的教程
May 05 Python
Python scikit-learn 做线性回归的示例代码
Nov 01 Python
Python实现PS滤镜中马赛克效果示例
Jan 20 Python
python 每天如何定时启动爬虫任务(实现方法分享)
May 21 Python
使用tensorflow实现线性svm
Sep 07 Python
python实现连连看辅助之图像识别延伸
Jul 17 Python
Python对接六大主流数据库(只需三步)
Jul 31 Python
python处理excel绘制雷达图
Oct 18 Python
Tensorflow分批量读取数据教程
Feb 07 Python
解决Python在导入文件时的FileNotFoundError问题
Apr 10 Python
Python ini文件常用操作方法解析
Apr 26 Python
python - asyncio异步编程
Apr 06 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变量存储的详解
2013/06/13 PHP
php+mysql实现简单的增删改查功能
2015/07/13 PHP
WAF的正确bypass
2017/01/05 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
url 编码 js url传参中文乱码解决方案
2010/04/11 Javascript
javascript 运算数的求值顺序
2011/08/23 Javascript
到处都是jQuery选择器的年代 不了解它们的性能,行吗
2012/06/18 Javascript
页面只能打开一次Cooike如何实现
2012/12/04 Javascript
ExtJS4中的requires使用方法示例介绍
2013/12/03 Javascript
jquery将一个表单序列化为一个对象的方法
2014/01/03 Javascript
JavaScript Math.floor方法(对数值向下取整)
2015/01/09 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
2015/09/06 Javascript
js动态生成Html元素实现Post操作(createElement)
2015/09/14 Javascript
点击按钮出现60秒倒计时的简单js代码(推荐)
2016/06/07 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
2017/04/01 Javascript
Three.js实现绘制字体模型示例代码
2017/09/26 Javascript
浅谈HTTP 缓存的那些事儿
2018/10/17 Javascript
layui 解决form表单点击无反应的问题
2019/10/25 Javascript
最大K个数问题的Python版解法总结
2016/06/16 Python
基于Python的接口测试框架实例
2016/11/04 Python
Python实现通讯录功能
2018/02/22 Python
python让列表倒序输出的实例
2018/06/25 Python
python动态视频下载器的实现方法
2019/09/16 Python
python opencv图片编码为h264文件的实例
2019/12/12 Python
python turtle工具绘制四叶草的实例分享
2020/02/14 Python
Pycharm编辑器功能之代码折叠效果的实现代码
2020/10/15 Python
python利用 keyboard 库记录键盘事件
2020/10/16 Python
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
美国时装品牌:Nautica(诺帝卡)
2016/08/28 全球购物
世界上最大的在线汽车租赁预订平台:Rentalcars.com(支持中文)
2018/10/12 全球购物
印度最好的在线药品订购网站:PharmEasy
2018/11/30 全球购物
生物制药毕业生自荐信
2013/10/16 职场文书
高中英语教学反思
2014/02/04 职场文书
个人债务授权委托书范本
2014/10/05 职场文书
2016年安全月活动总结
2016/04/06 职场文书
SpringBoot详解自定义Stater的应用
2022/07/15 Java/Android