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运行的17个时新手常见错误小结
Aug 07 Python
python多线程扫描端口示例
Jan 16 Python
Python中的Numpy入门教程
Apr 26 Python
Python基于生成器迭代实现的八皇后问题示例
May 23 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
Nov 10 Python
Django自定义用户登录认证示例代码
Jun 30 Python
Win10下python 2.7与python 3.7双环境安装教程图解
Oct 12 Python
使用pytorch实现可视化中间层的结果
Dec 30 Python
详解Pycharm出现out of memory的终极解决方法
Mar 03 Python
django 前端页面如何实现显示前N条数据
Mar 16 Python
Python 实现进度条的六种方式
Jan 06 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
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
Home Coffee Roasting
2021/03/03 咖啡文化
针对初学PHP者的疑难问答(2)
2006/10/09 PHP
PHP SEO优化之URL优化方法
2011/04/21 PHP
使用PHP实现密保卡功能实现代码<打包下载直接运行>
2011/10/09 PHP
浅析PHP的静态成员函数效率更高的原因
2014/06/13 PHP
PHP中开启gzip压缩的2种方法
2015/01/31 PHP
基于PHP给大家讲解防刷票的一些技巧
2015/11/18 PHP
PHP数组相加操作及与array_merge的区别浅析
2016/11/26 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
2019/10/15 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
javascript css float属性的特殊写法
2008/11/13 Javascript
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
Javascript 闭包引起的IE内存泄露分析
2012/05/23 Javascript
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
javascript获取当前的时间戳的方法汇总
2015/07/26 Javascript
Node.js读取文件内容示例
2017/03/07 Javascript
使用jQuery卸载全部事件的思路详解
2017/04/03 jQuery
微信小程序 request接口的封装实例代码
2017/04/26 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
vue设置导航栏、侧边栏为公共页面的例子
2019/11/01 Javascript
echarts实现折线图的拖拽效果
2019/12/19 Javascript
github配置使用指南
2014/11/18 Python
深入解析Python中的变量和赋值运算符
2015/10/12 Python
基于python3 类的属性、方法、封装、继承实例讲解
2017/09/19 Python
Python3实现取图片中特定的像素替换指定的颜色示例
2019/01/24 Python
django中的图片验证码功能
2019/09/18 Python
python3 求约数的实例
2019/12/05 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
2020/06/04 Python
Python实现ElGamal加密算法的示例代码
2020/06/19 Python
毕业生个人求职信范例分享
2013/12/17 职场文书
致1500米运动员广播稿
2014/02/07 职场文书
《雾凇》教学反思
2014/02/17 职场文书
会计主管岗位职责
2015/04/02 职场文书
Django实现WebSocket在线聊天室功能(channels库)
2021/09/25 Python