selenium+python自動化78-autoit參數化與批量上傳

2021-02-21 從零開始學自動化測試

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

```

《selenium webdriver基於Python源碼案例》全本閱讀,點左下角「閱讀原文」直接購買,已購買的可以憑訂單號加VIP讀書交流群372471871,有問必解!

鼓勵小編!

相關焦點

  • selenium+python自動化77-autoit文件上傳
    執行1.把上傳文件的動作已經弄成了一個.exe的文件了,接下來用python去執行這個.exe文件就能實現文件上傳了 > python調用dos,用這個方法os.system("需執行的指令")```python# coding:utf-8from selenium import webdriverimport
  • selenium+python自動化99--文件下載彈窗處理(PyKeyboard)
    前言在web自動化下載操作時,有時候會彈出下載框,這種下載框不屬於web的頁面,是沒辦法去定位的(有些同學一說到點擊之前講過一篇Selenium2+python自動化75-非input文件上傳(SendKeys)這個當時是基於python2寫的。
  • Selenium+Python自動化測試:AutoIt工具實現本地文件上傳
    吳老的java版《selenium webdriver 實戰寶典》和python版《selenium Webdriver 3.0 自動化測試框架實戰指南
  • python Chrome + selenium自動化測試與python爬蟲獲取網頁數據
    CSDN博客主頁:https://blog.csdn.net/u013541325一、使用
  • Selenium3+python自動化50-環境搭建(firefox)
    Unsupported Marionette protocol version 2, required 3環境準備:--python3.6--selenium3.0--firefox50 一、安裝python1.安裝python這個簡單,下載版本後傻瓜式安裝就行了。
  • Selenium+Python—實現基本自動化測試
    ,通過一系列命令來模擬用戶操作,可以將這些命令轉化成實際的請求在瀏覽器中運行的命名比較有意思,當時是主流的商業自化工具,是化學元素汞(俗稱水銀),而是開源自動化工具,是化學元素硒,硒可以對抗汞。SeleniumGrid:selenium分布式  SeleniumRC:Selenium1.0的核心,SeleniumRC支持多種不同語言編寫的自動化測試腳本,在瀏覽器中運行JavaScript應用,使用瀏覽器內置的JavaScript翻譯器來翻譯和執行selenese命令(selenese是selenium命令集合)。
  • selenium知識點小結(今夜又有福利)
    還有就是前幾天有粉絲對小編留言說:小編上次發的python的視頻講的不好,都是機構的廣告,在這邊跟大家道歉,不好意思,資料都是小編從網上找來的,但是只找到那一套視頻,所以就上傳了那一套的連結,不好意思哈,今天小編又重新找到一套python視頻,有基礎,進階,高級的,希望對大家有所幫助,如果覺得那些資料找的不是重點,可以留言告訴小編,需要最新python資料的同學幫忙小編推薦身邊的一個好友關注本公眾號
  • 自動化-Selenium 3-啟動瀏覽器(Python版)
    /usr/bin/env python# -*- coding: utf-8 -*-from selenium import webdriverimport os"""打開指定路徑的Chrome/usr/bin/env python# -*- coding: utf-8 -*-from selenium import webdriverimport os"""利用chromedriver
  • Selenium2+python自動化45-18種定位方法(find_elements)
    方法是複數,這個學過英文的都知道,定位到的是一組元素,返回的是list隊列(經常看到初學者傻傻分不清,容易搞混,這個要仔細了)3.可以用type()函數查看數據類型4.列印這個返回的內容看看有什麼不一樣 三、elements定位方法1.前面一篇已經講過find_element()的用法,看這裡:Selenium2+python
  • Python 題庫自動化面試題
    from selenium.webdriver.common.by import By # 支持的定位器策略集 18、你覺得自動化測試用哪些缺陷 19、Web 端功能自動化,如何實現(非input型上傳)上傳文件  這兩個庫:import win32guiimport win32con20、遇到<d1> 這種class中間有空格的控制項,如何通過class定位?
  • 自動化-Selenium 3-Selenium Grid2(Python版)
    當啟動代理節點時其實就是一個註冊過程;啟動時所帶的參數會被hub記住作為註冊信息,所以頁面中所看到的信息就是各代理節點註冊時信息的匯總。/usr/bin/env python# -*- coding: utf-8 -*-from selenium import webdriverfrom selenium.webdriver.common.desired_capabilities import DesiredCapabilities
  • UI自動化測試上傳文件方法都在這裡了!
    實施UI自動化測試的時候,經常會遇見上傳文件的操作,那麼對於上傳文件你知道幾種方法呢?今天我們就總結一下幾種常用的上傳文件的方法,並分析一下每個方法的優點和缺點以及哪種方法效率,穩定性更高。input標籤來定義的上傳文件按鈕,所以就無法使用send_keys方法上傳,這也是這個方法的限制第二種方法:是AutoIT工具,它是一個類似腳本語言的軟體,利用此軟體我們可以方便的實現模擬鍵盤、滑鼠、窗口等操作,實現自動化安裝官網地址:https://www.autoitscript.com
  • Selenium Python 教程
    Selenium是一個用電腦模擬人操作瀏覽器網頁,使用python編程實現自動化。
  • Selenium2+python自動化28-table定位
    <td>appium自動化</td>                      <td>512200893</td>                      <td>YOYO</td>                  </tr>              </table>
  • selenium+python自動化85-Chrome靜默模式(headless)
    前言selenium+phantomjs可以打開無界面的瀏覽器,實現靜默模式啟動瀏覽器完成自動化測試,這個模式是極好的,不需要佔用電腦的屏幕
  • selenium+python自動化96-執行jquery報:$ is not defined
    前言背景介紹:做wap頁面自動化的時候,把url地址直接輸入到瀏覽器(chrome瀏覽器有手機wap模式)上測試,有個按鈕死活點不到,用wap模式的觸摸事件也無法解決
  • linux+python+selenium grid構建可視化分布式自動化測試環境
    我們在做爬蟲,或者自動化測試的時候,經常需要用到selenium,這個框架大家也都不陌生,相信用過的朋友, 大部分肯定都知道在Windows下不管做UI
  • selenium+python自動化99-clear()失效問題解決
    前言在使用selenium做UI自動化的時候,發現有些彈出窗上的輸入框,輸入文本後,使用clear()方法無效。
  • Python+selenium教程
    人工智慧機器學習方面應用,python有很多庫很方便做人工智慧,比如numpy, scipy做數值計算的,sklearn做機器學習的,pybrain做神經網絡的。軟體測試領域,自動化測試(Web端(python+selenium)和移動客戶端python+appium)Python2.X 與Python3.X學哪個?
  • Linux+Python+Selenium Grid構建可視化分布式自動化測試環境
    爬蟲人工智慧大數據(ID:pylearn)我們在做爬蟲,或者自動化測試的時候,經常需要用到Selenium,這個框架大家也都不陌生,相信用過的朋友, 大部分肯定都知道在Windows下不管做UI自動化測試還是做爬蟲元素提取,都是非常方便的,比如看下面的代碼,是一個最基本的在Windows下操控Chrome瀏覽器打開網頁的代碼from selenium import webdriver