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 相关文章推荐
Pycharm学习教程(4) Python解释器的相关配置
May 03 Python
python微信跳一跳系列之自动计算跳一跳距离
Feb 26 Python
Python+OpenCV目标跟踪实现基本的运动检测
Jul 10 Python
python 阶乘累加和的实例
Feb 01 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
Feb 21 Python
python的turtle库使用详解
May 10 Python
python离线安装外部依赖包的实现
Feb 13 Python
python实现简单俄罗斯方块
Mar 13 Python
解决echarts中饼图标签重叠的问题
May 16 Python
使用Python操作MySQL的小技巧
Sep 10 Python
Python绘制组合图的示例
Sep 18 Python
python实现语音常用度量方法的代码详解
May 25 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
二次元帅气男生排行榜,只想悄悄收藏系列
2020/03/04 日漫
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
2009/12/16 PHP
php小型企业库存管理系统的设计与实现代码
2011/05/16 PHP
PHP正确配置mysql(apache环境)
2011/08/28 PHP
php读取本地文件常用函数(fopen与file_get_contents)
2013/09/09 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
2017/05/20 PHP
javascript和HTML5利用canvas构建猜牌游戏实现算法
2013/07/17 Javascript
JQuery获取或设置ckeditor的数据(示例代码)
2013/11/15 Javascript
javascript原型模式用法实例详解
2015/06/04 Javascript
jQuery蓝色风格滑动导航栏代码分享
2015/08/19 Javascript
js实现仿爱微网两级导航菜单效果代码
2015/08/31 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
jQuery实现的鼠标滚轮控制图片缩放功能实例
2017/10/14 jQuery
深入浅析vue组件间事件传递
2017/12/29 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
2020/01/20 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
2020/05/31 Javascript
Vue toFixed保留两位小数的3种方式
2020/10/23 Javascript
Django返回json数据用法示例
2016/09/18 Python
Python利用ElementTree模块处理XML的方法详解
2017/08/31 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
python版微信跳一跳游戏辅助
2018/01/11 Python
python爬虫爬取某站上海租房图片
2018/02/04 Python
在CMD命令行中运行python脚本的方法
2018/05/12 Python
Python实现重建二叉树的三种方法详解
2018/06/23 Python
解决Django中调用keras的模型出现的问题
2019/08/07 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
2020/02/23 Python
基于Python计算圆周率pi代码实例
2020/03/25 Python
HTML5 Canvas——用路径描画线条实例介绍
2013/06/09 HTML / CSS
希腊品牌鞋类销售网站:epapoutsia.gr
2020/03/18 全球购物
施工安全标语
2014/06/07 职场文书
2014年居委会工作总结
2014/12/09 职场文书
深入浅析React中diff算法
2021/05/19 Javascript
OpenCV项目实践之停车场车位实时检测
2022/04/11 Python
在windows server 2012 r2中安装mysql的详细步骤
2022/07/23 Servers