selenium+python自动化78-autoit参数化与批量上传功能的实现
作者:上海-悠悠 发布时间:2023-11-02 01:24:57
标签:python,自动化,批量上传,selenium
前言
前一篇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)
来源:https://www.cnblogs.com/yoyoketang/p/7653221.html
0
投稿
猜你喜欢
- 线程池的概念是什么?在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是 如此,虚
- isNaN函数 返回一个 Boolean 值,指明提供的值是否是保留值 NaN (不是数字)。 NaN 即 Not a Number isN
- 至于对好广告的评判,不同的人有不同的标准,一些人认为那些打动人、有新意、有共鸣的广告是好广告,另一些人的观点则是:观众喜欢与否,不是广告好与
- 现在Ajax是一个相当火的东西,那么Ajax是什么呢?我的理解Ajax就是一个工具,就是一个客户端的技术,不管用何种服务器端技术都可以用Aj
- 🥩数据采集🍖确定网址王者新赛季马上就要开始了,大家都开始冲榜了,准备拿一个小省标,那么,本文,就来练习获取各地最低战力的爬虫采集实战。确定好
- 1.将以下代码加入到HEML的<body></body>之间<SCRIPT language=jav
- 本文通过实例代码介绍了如何在jscript和vbscript中使用操作FileSystemObject(fso)对象模式来编程.
- 最近一段时间一直在研究yolo物体检测,基于网络上很少有yolo的分类预训练和yolo9000的联合数据的训练方法,经过本人的真实实验,对这
- 今天做visual transformer研究的时候,发现了einops这么个神兵利器,决定大肆安利一波。先看链接:https://gith
- 前言在python基础知识中有说过,字典是可变的数据类型,其参数又是键对值。setdefault()方法和字典的get()方法在一些地方比较
- 前几天写了一个ajax的,总感觉代码比较多,今天晚上又得写了一下,感觉代码还是比较多,但还好的是,比较通用。谁有办法优化一下当然好。&nbs
- 一、全局阈值原图:整幅图采用一个阈值,与图片的每一个像素灰度进行比较,重新赋值;1.效果图2.源码import cv2import matp
- 假设我们有一段程序,从 Redis 中读取数据,解析以后提取出里面的 name 字段:import jsonimport redisclie
- 1、slice结构体首先我们来看一段代码package mainimport ( "fmt"
- 具体环境:Ubuntu 14.04 Python 2.7.6 Django 1.7.1 Virtualenv name:test Nginx
- 本文实例讲述了Golang正整数指定规则排序算法问题。分享给大家供大家参考,具体如下:给定字符串内有很多正整数,要求对这些正整数进行排序,然
- 有些时候因为某些原因(如本地机器资源不足、数据不能离网等),需要使用本地电脑连接远程服务器进行开发工作,在这里记录下如何在远程Linux上配
- # 贪婪模式 默认的匹配规则# 在满足条件的情况下 尽可能多的去匹配到字符串import rers = re.match('\d{6
- 简介ORA-10458: standby database requires recoveryORA-01196: 文件 1 由于介质恢复会
- 本文实例讲述了Python实现模拟登录及表单提交的方法。分享给大家供大家参考。具体实现方法如下:# -*- coding: utf-8 -*