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 11 Python
在Python中marshal对象序列化的相关知识
Jul 01 Python
python使用os.listdir和os.walk获得文件的路径的方法
Dec 16 Python
python爬虫自动创建文件夹的功能
Aug 01 Python
python gensim使用word2vec词向量处理中文语料的方法
Jul 05 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
Nov 04 Python
解决jupyter运行pyqt代码内核重启的问题
Apr 16 Python
Jupyter Notebook折叠输出的内容实例
Apr 22 Python
pandas dataframe 中的explode函数用法详解
May 18 Python
简单的Python人脸识别系统
Jul 14 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
Jul 18 Python
Python自动发送和收取邮件的方法
Aug 12 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下通过系统信号量加锁方式获取递增序列ID
2009/09/25 PHP
php对关联数组循环遍历的实现方法
2015/03/13 PHP
PHP微信红包API接口
2015/12/05 PHP
php中实现字符串翻转的方法
2017/02/22 PHP
THINKPHP截取中文字符串函数实例代码
2017/03/20 PHP
PHP封装curl的调用接口及常用函数详解
2018/05/31 PHP
2020最新版 PhpStudy V8.1版本下载安装使用详解
2020/10/30 PHP
如何简单地用YUI做JavaScript动画
2007/03/10 Javascript
JavaScript基本编码模式小结
2012/05/23 Javascript
jquery实现输入框动态增减的实例代码
2013/07/14 Javascript
nodejs初步体验篇
2015/11/23 NodeJs
基于Bootstrap实现Material Design风格表单插件 附源码下载
2016/04/18 Javascript
AngularJS表单验证功能分析
2017/05/26 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
详解动画插件wow.js的使用方法
2017/09/13 Javascript
Webpack实战加载SVG的方法
2017/12/26 Javascript
vue使用iframe嵌入网页的示例代码
2020/06/09 Javascript
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
2019/02/02 NodeJs
JavaScript使用ul中li标签实现删除效果
2019/04/15 Javascript
浅谈javascript错误处理
2019/08/11 Javascript
python分析apache访问日志脚本分享
2015/02/26 Python
浅谈Python基础之I/O模型
2017/05/11 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
2018/09/02 Python
基于python2.7实现图形密码生成器的实例代码
2019/11/05 Python
基于Django实现日志记录报错信息
2019/12/17 Python
Python 一行代码能实现丧心病狂的功能
2020/01/18 Python
利用PyQt中的QThread类实现多线程
2020/02/18 Python
如何用用Python将地址标记在地图上
2021/02/07 Python
使用HTML5做的导航条详细步骤
2020/10/19 HTML / CSS
某公司Java工程师面试题笔试题
2016/03/27 面试题
职工运动会邀请函
2014/01/19 职场文书
婚假请假条怎么写
2014/04/10 职场文书
孝女彩金观后感
2015/06/10 职场文书
Mysql 如何批量插入数据
2021/04/06 MySQL
实例讲解Python中sys.argv[]的用法
2021/06/03 Python
对讲机知识
2022/04/07 无线电