当前位置:   article > 正文

python 桌面自动化autoit3,selenium+python自动化78-autoit参数化与批量上传

autoit3 编译exe文件 添加外部参数

前言

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

7f7a6da50207a57a6d509e0ff9a2fb69bbd.jpg

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)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/618266
推荐阅读
相关标签
  

闽ICP备14008679号