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代碼執行


# 需上傳圖片的路徑
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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM