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函数缺省值与引用学习笔记分享
Feb 10 Python
Python爬取读者并制作成PDF
Mar 10 Python
Python实现对比不同字体中的同一字符的显示效果
Apr 23 Python
python fabric使用笔记
May 09 Python
Python 实现购物商城,含有用户入口和商家入口的示例
Sep 15 Python
利用Python2下载单张图片与爬取网页图片实例代码
Dec 25 Python
Python下调用Linux的Shell命令的方法
Jun 12 Python
Python爬虫基础之XPath语法与lxml库的用法详解
Sep 13 Python
python顺序执行多个py文件的方法
Jun 29 Python
Python 使用folium绘制leaflet地图的实现方法
Jul 05 Python
PyTorch中常用的激活函数的方法示例
Aug 20 Python
Python实现结构体代码实例
Feb 10 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
预告映像公开!第1章续篇剧场版动画《Princess Principal Crown Handler》4月10日上映!
2020/03/06 日漫
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
2009/03/13 PHP
phpMyAdmin出现无法载入 mcrypt 扩展,请检查PHP配置的解决方法
2012/03/26 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
2013/06/14 PHP
PHP实现基于回溯法求解迷宫问题的方法详解
2017/08/17 PHP
PHP让数组中有相同值的组成新的数组实例
2017/12/31 PHP
IE bug table元素的innerHTML
2010/01/11 Javascript
jquery绑定事件不生效的解决方法
2014/02/11 Javascript
一个可以增加和删除行的table并可编辑表格中内容
2014/06/16 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
jQuery实现模仿微博下拉滚动条加载数据效果
2015/12/25 Javascript
基于javascript实现彩票随机数生成(升级版)
2020/04/17 Javascript
BootStrap创建响应式导航条实例代码
2016/05/31 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
2016/07/01 Javascript
jQuery事件处理的特征(事件命名机制)
2016/08/23 Javascript
详解Angualr 组件间通信
2017/01/21 Javascript
nodejs根据ip数组在百度地图中进行定位
2017/03/06 NodeJs
Angular2使用Augury来调试Angular2程序
2017/05/21 Javascript
VUE 使用中踩过的坑
2018/02/08 Javascript
JS实现中英文混合文字溢出友好截取功能
2018/08/06 Javascript
详解小程序不同页面之间通讯的解决方案
2018/11/23 Javascript
javascript中的相等操作符(==与===区别)
2019/12/21 Javascript
JavaScript实现拖拽和缩放效果
2020/08/24 Javascript
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
Python操作Sql Server 2008数据库的方法详解
2018/05/17 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
2019/04/04 Python
django美化后台django-suit的安装配置操作
2020/07/12 Python
Django mysqlclient安装和使用详解
2020/09/17 Python
NULL是什么,它是怎么定义的
2015/05/09 面试题
韩语专业本科生求职信
2013/10/01 职场文书
迎八一活动主题
2014/01/31 职场文书
新闻编辑求职信
2014/04/09 职场文书
本科应届生自荐信
2014/06/29 职场文书
2014年幼儿园德育工作总结
2014/12/17 职场文书
项目合作意向书
2015/05/08 职场文书
Java基础之this关键字的使用
2021/06/30 Java/Android