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

Posted jason89

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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代码执行

```python

# 需上传图片的路径
file_path = "D:\\\\1.png"

# 执行autoit上传文件
os.system("C:\\Users\\Gloria\\Desktop\\cmdjpg.exe %s" % file_path)  # 你自己本地的

```

二、批量上传图片

1.方法一:先把要上传的图片放到一个list下,然后for循环

```python

# 把需要上传的图片放到一个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循环

```python

# 循环点击上传图片
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)

```

 三、参考代码

```python

 1 # coding:utf-8
 2 from selenium import webdriver
 3 import time
 4 import os
 5 # 加载配置文件实现免登录
 6 profileDir = rC:\\Users\\Gloria\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\1x41j9of.default  # 你自己电脑的配置文件路径,不要抄我的
 7 profile = webdriver.FirefoxProfile(profileDir)
 8 driver = webdriver.Firefox(profile)
 9 driver.implicitly_wait(30)
10 driver.get("http://www.cnblogs.com/yoyoketang/")
11 driver.find_element_by_link_text("新随笔").click()
12 time.sleep(3)
13 
14 # 方法一:把需要上传的图片放到一个list下
15 all_png = ["D:\\\\1.png", "D:\\\\2.png", "D:\\\\3.png", "D:\\\\4.png"]
16 
17 for i in all_png:
18     # 点开编辑器图片
19     driver.find_elements_by_css_selector("img.mceIcon")[0].click()
20     time.sleep(3)
21     # 定位所有iframe,取第二个
22     iframe = driver.find_elements_by_tag_name(iframe)[1]
23     # 切换到iframe上
24     driver.switch_to_frame(iframe)
25     # 点开文件上传按钮
26     driver.find_element_by_name(file).click()
27     time.sleep(3)
28     # 执行autoit上传文件
29     print i
30     os.system("C:\\Users\\Gloria\\Desktop\\cmdjpg.exe %s" % i)  # 你自己本地的.exe路径
31     time.sleep(3)
32     driver.switch_to_default_content()  # 切回到主页面
33 
34 
35 # # 方法二:循环点击上传图片
36 # for i in range(4):
37 #     # 1点开编辑器图片
38 # 
39 #     # 2点开文件上传按钮
40 # 
41 #     # 文件名
42 #     file_name = "D:\\\\%s.png" % i  # 参数化路径名称
43 # 
44 #     # 执行autoit上传文件
45 #     os.system("C:\\Users\\Gloria\\Desktop\\cmdjpg.exe %s" % file_name)  # 你自己本地的.exe路径
46 #     time.sleep(3)

 

 
























































































以上是关于selenium+python自动化78-autoit参数化与批量上传的主要内容,如果未能解决你的问题,请参考以下文章

基于Python+selenium+Chrome的网页自动化教程

Selenium_python自动化环境搭建篇

Selenium2+python自动化2-pip降级selenium3.0

Selenium2+python自动化2-pip降级selenium3.0

python+selenium+chrome网页自动化

[Selenium自动化测试学习]Python+Selenium环境搭建