selenium+python自动化78-autoit参数化与批量上传功能的实现

作者:上海-悠悠 时间:2023-11-02 01:24:57 

前言

前一篇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)

来源:https://www.cnblogs.com/yoyoketang/p/7653221.html

标签:python,自动化,批量上传,selenium
0
投稿

猜你喜欢

  • python如何导出微信公众号文章方法详解

    2022-10-01 00:31:27
  • 关于Python 的简单栅格图像边界提取方法

    2021-08-18 18:19:28
  • Python入门_学会创建并调用函数的方法

    2023-10-14 17:12:22
  • 使用python对视频文件分辨率进行分组的实例代码

    2022-06-06 21:16:44
  • python数据处理——对pandas进行数据变频或插值实例

    2021-01-05 19:22:01
  • python将字典内容存入mysql实例代码

    2024-01-22 11:23:04
  • Python机器学习入门(五)之Python算法审查

    2021-10-15 09:27:48
  • PyCharm代码格式调整方法

    2021-05-21 14:59:32
  • Python socket如何解析HTTP请求内容

    2022-05-06 20:09:23
  • 关于keras中卷积层Conv2D的学习记录

    2022-07-16 17:33:16
  • Golang二维数组的使用方式

    2023-07-21 07:29:16
  • python切割图片的示例

    2021-01-10 22:09:12
  • Xml_javascript分页

    2008-09-04 14:43:00
  • zabbix监控Nginx/Tomcat/MySQL的详细教程

    2024-01-15 04:31:33
  • Python torch.onnx.export用法详细介绍

    2022-04-28 22:07:33
  • php使用ZipArchive函数实现文件的压缩与解压缩

    2023-07-12 20:58:19
  • Vscode编辑器的巧妙用法(快速格式化代码的方法)

    2022-07-02 01:13:33
  • MySQL中如何正确存储IP地址

    2024-01-29 13:34:34
  • Python跨文件全局变量的实现方法示例

    2021-05-26 08:13:23
  • Vue2.x与Vue3.x中路由钩子的区别详解

    2024-04-30 10:39:52
  • asp之家 网络编程 m.aspxhome.com