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 = r‘C:\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)

 

原文地址:https://www.cnblogs.com/jason89/p/9028767.html

时间: 2024-07-30 03:40:29

selenium+python自动化78-autoit参数化与批量上传的相关文章

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

转至博客:上海-悠悠 前言前一篇autoit实现文件上传打包成.exe可执行文件后,每次只能传固定的那个图片,我们实际测试时候希望传不同的图片.这样每次调用的时候,在命令行里面加一个文件路径的参数就行. 一.命令行参数 1.参数化传入的参数,可以通过autoit的命令行参数: ```    myProg.exe param1 "This is a string parameter" 99``` 在脚本中,可用以下变量获取命令行参数: ```$CmdLine[0] ; = 3$CmdLi

Selenium+python自动化21-TXT数据参数化

前言      在17篇我们讲了excel数据的参数化,有人问了txt数据的参数化该怎么办呢,下面小编为你带你txt数据参数化的讲解 一.以百度搜索为例,自动搜索五次不同的关键字.输入的数据不同从而引起输出结果的变化. 测试脚本: 1 #coding=utf-8 2 from selenium import webdriver 3 import unittest, time, os 4 class Login(unittest.TestCase): 5 def test_login(self):

selenium+python自动化98--文件下载弹窗处理(PyKeyboard)

前言 在web自动化下载操作时,有时候会弹出下载框,这种下载框不属于web的页面,是没办法去定位的(有些同学一说到点击,脑袋里面就是定位!定位!定位!) 有时候我们并不是非要去定位到这个按钮再去点击,学会使用键盘的快捷键操作,也能达到一样的效果. 之前讲过一篇Selenium2+python自动化75-非input文件上传(SendKeys)这个当时是基于python2写的. 最近很多小伙伴开始用python3了,这个SendKeys在python3上没法用,python3需要用PyUserIn

Pycharm+Selenium Python 自动化搭建

Pycharm+Selenium  自动化搭建 一,按照博客链接安装: (1)Pycharm+Selenium Python 自动化搭建 (2) 下载chrom对应版本chromdriver http://chromedriver.chromium.org/downloads (3)解压放在python37目录下 二,创建后代码 (1)代码: from selenium import webdriver options = webdriver.ChromeOptions() options.bi

Java+Selenium——AutoIt工具处理文件上传

参考:https://blog.csdn.net/u011541946/article/details/74359517 参考:https://blog.csdn.net/linxi9322/article/details/78789452 关于文件上传,这边介绍一个第三方工具,叫AutoIt,简单来说,这个是一个能支持桌面GUI自动化的工具,它支持脚本语言编写.这里,我们用AutoIt来做文件上传的演示.在Selenium脚本中如果需要AutoIt来协助这个文件上传功能,大概步骤是这样的: 1

Puppeteer自动化批量上传抖音视频

前言:最近因为项目宣传,所以用Puppeteer写了一个批量上传抖音视频的自动化程序用于推广. 环境和依赖:node,puppeteer 废话不多说,直接上代码: const puppeteer =require('puppeteer'); const fs = require('fs'); var arry=[]; fs.readdir('video',function(err,files){ if(err){ console.log(err); } else{ (function getfi

python paramiko 多线程批量执行指令及批量上传文件和目录

源代码: https://github.com/jy1779/be.git 环境需求: 1.python3 2.paramiko pip install --upgrade pip apt-get install libssl-dev pip3 install paramiko 3.执行权限 chmod +x becmd.py ln -s /root/be/bin/becmd.py /usr/local/sbin/becmd chmod +x besync.py ln -s /root/be/b

python3、selenium、autoit3,通过flash控件上传文件

autoit.au3 #include <Constants.au3> WinWait("打开","",20); //暂停执行脚本,直到上传对话框出现 WinActive("打开") WinWaitActive("打开","",5); //激活上传窗口 ControlFocus("打开", "", "[CLASS:Edit; INSTANCE:1

不带插件 ,自己写js,实现批量上传文件及进度显示

今天接受项目中要完成文件批量上传文件而且还要显示上传进度,一开始觉得这个应该不是很麻烦,当我在做的时候遇到了很多问题,很头疼啊. 不过看了别人写的代码,自己也测试过,发现网上好多都存在一些问题,并不是自己想要的.然后自己查阅各种资料,经过自己总结,最终完成了这个功能. 如果大家有什么问题可以提出来,一起交流,学习.有什么不对的地方也指出来,我也虚心学习.自己也是刚写博客,您们的赞是我写博客的动力,谢谢大家. 条件:我采用struts2,java ,ajax,FormData实现; 1.实现的逻辑