selenium+python自动化78-autoit参数化与批量上传
前言
前一篇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");
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参数化与批量上传的更多相关文章
- selenium+python自动化78-autoit参数化与批量上传【转载】
转至博客:上海-悠悠 前言前一篇autoit实现文件上传打包成.exe可执行文件后,每次只能传固定的那个图片,我们实际测试时候希望传不同的图片.这样每次调用的时候,在命令行里面加一个文件路径的参数就行 ...
- Python实现对百度云的文件上传
环境准备 python3.6 PyCharm 2017.1.3 Windows环境 框架搭建 selenium3.6 安装方法: pip install selenium 实现步骤: 一.步骤分析 1 ...
- selenium+python自动化98--文件下载弹窗处理(PyKeyboard)
前言 在web自动化下载操作时,有时候会弹出下载框,这种下载框不属于web的页面,是没办法去定位的(有些同学一说到点击,脑袋里面就是定位!定位!定位!) 有时候我们并不是非要去定位到这个按钮再去点击, ...
- selenium+python自动化79-文件下载(SendKeys)
前言 文件下载时候会弹出一个下载选项框,这个弹框是定位不到的,有些元素注定定位不到也没关系,就当没有鼠标,我们可以通过键盘的快捷键完成操作. SendKeys库是专业的处理键盘事件的,所以这里需要用S ...
- Python基于Python实现批量上传文件或目录到不同的Linux服务器
基于Python实现批量上传文件或目录到不同的Linux服务器 by:授客 QQ:1033553122 实现功能 1 测试环境 1 使用方法 1 1. 编辑配置文件conf/rootpath_fo ...
- Puppeteer自动化批量上传抖音视频
前言:最近因为项目宣传,所以用Puppeteer写了一个批量上传抖音视频的自动化程序用于推广. 环境和依赖:node,puppeteer 废话不多说,直接上代码: const puppeteer =r ...
- 使用 sendKeys(keysToSend) 批量上传文件
未经允许,禁止转载!!! 在selenium里面处理文件上传的时候可以使用sendKeys(keysToSend) 上传文件 例如: element.sendKeys(“C:\\test\\uploa ...
- mvc中使用uploadify批量上传的应用
网上找了很多资料都没有发现一个好用.可以用的uploadify批量上传的应用,这里通过官方和自己的一些项目需要整理了一个出来. 希望能帮助到需要的人. 效果图:
- antd 批量上传文件逻辑
基本步骤 通过 antd 框架的 Upload 控件,采用手动上传的方式,先选择需要上传的文件(控制文件数量以及大小),再根据所选的文件列表,循环上传,期间通过 Spin 控件提示上传中. 效果展示 ...
随机推荐
- Android 动画:你真的会使用插值器与估值器吗?
目录 目录 1. 插值器(Interpolator) 1.1 简介 定义:一个接口 作用:设置 属性值 从初始值过渡到结束值 的变化规律 如匀速.加速 & 减速 等等 即确定了 动画效果变 ...
- 使用 IIS 在 Windows 上托管 ASP.NET Core
参考微软文档: https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/index?tabs=aspnetcore2x 将as ...
- CNN中各种各样的卷积
https://zhuanlan.zhihu.com/p/29367273 https://zhuanlan.zhihu.com/p/28749411 以及1*1卷积核:https://www.zhi ...
- laravel使用when搜索遇到状态参数(有0的状态)的坑
今天,使用when()方法写活动列表的接口,有两个状态搜索,都有0这个状态,当传参为0时when()就失效了... 反反复复的验证参数,传参确实是0和1啊...百思不得其解~~~后面仔细想想when( ...
- hdu6107 倍增法st表
发现lca的倍增解法和st表差不多..原理都是一样的 /* 整篇文章分成两部分,中间没有图片的部分,中间有图片的部分 分别用ST表求f1,f2表示以第i个单词开始,连续1<<j行能写多少单 ...
- python 全栈开发,Day119(Flask初识,Render Redirect HttpResponse,request,模板语言 Jinja2,用户登录例子,内置Session)
一.Flask初识 首先,要看你学没学过Django 如果学过Django 的同学,请从头看到尾,如果没有学过Django的同学,并且不想学习Django的同学,轻饶过第一部分 三大主流Web框架对比 ...
- MyEclipse10中启动出现OutOfMemoryError: PermGen space如何解决
一篇关于技术的文档,分享给大家.在MyEclipse中启动程序运行,报错java.lang.OutOfMemoryError: PermGen space应该怎么办?这是eclipse 内存不够的原因 ...
- 【AtCoder】全国統一プログラミング王決定戦予選/NIKKEI Programming Contest 2019
感觉最近好颓,以后不能这么颓了,要省选了,争取省选之前再板刷一面ATC??? A - Subscribers 简单容斥 #include <bits/stdc++.h> #define f ...
- POJ1487 Single-Player Games 高斯消元
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - POJ1487 题解概括 给出多个树形结构,由小写字母和数字表示,每个小写字母表示一棵小树.现在,以a为根节点 ...
- OSX 10.13 以后实现终端FTP命令(转)
macOS10.13 以后就没了........ 这样操作亲测可以恢复 1,brew install telnet 2,brew install inetutils 3,brew link --ove ...