【Autoit】Autoit 使用

1、Autoit 上傳文件、css

1.經常使用語法python

- WinActivate("title")         聚焦到指定活動窗口
 - ControlFocus ( "title", "窗口文本", controlID)   設置輸入焦點到指定窗口的某個控件上;
 - WinWait ( "title" , "窗口文本" , 超時時間 )  暫停腳本的執行直至指定窗口存在(出現)爲止;
 - ControlSetText ( "title", "窗口文本", controlID, "新文本" )   修改指定控件的文本;
 - Sleep ( 延遲 )   使腳本暫停指定時間,單位是毫秒;
 - ControlClick ( "title", "窗口文本", 控件ID , 按鈕 , 點擊次數 )   向指定控件發送鼠標點擊命令;web

2.編寫腳本編輯器

1)打開網頁,點擊到上傳文件界面。post

如博客園->新隨筆->上傳圖片,停留在此界面不動spa

2)打開SciTE Script Editor編寫腳本命令行

WinActivate("打開文件")
ControlSetText ( "打開文件", "", 「Edit1」, "d:\1.jpg" )   
Sleep ( 2000 )  
ControlClick ( "代開文件", "", 「Button1」 )  code

編輯完後運行,可看到圖片上傳成功blog

3.元素定位圖片

打開AutoIt Window Info定位上傳文件窗口的元素(title和control id)

control ID由class和instance組成

4.導出exe文件

打開AutoIt Window Info 將腳本導出exe文件

直接點擊exe文件運行或經過cmd運行可看見圖片上傳成功

5.python運行

(參考批量上傳圖片)

2、命令行參數上傳圖片

經過命令行參數批量上傳圖片

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)  # 你本身本地的
```

3、批量上傳圖片

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)
```

 方法2參考代碼:

 1 from selenium import webdriver  2 from selenium.webdriver.support.wait import WebDriverWait  3 import os  4 import time  5 profile_path = r'C:\Users\Administrator\AppData\Roaming\Mozilla\Firefox\Profiles\2hzyvtjr.default'
 6 profile = webdriver.FirefoxProfile(profile_path)  7 driver = webdriver.Firefox(profile)  8 
 9 def find_element_(loactor): 10     e = WebDriverWait(driver,timeout = 30).until(lambda x : x.find_element(*loactor)) 11     return e 12 
13 def find_elements_(loactor): 14     e = WebDriverWait(driver,timeout = 30).until(lambda x : x.find_elements(*loactor)) 15     return e 16 
17 driver.get(r'http://www.cnblogs.com/dhs94/') 18 find_element_(('id','blog_nav_newpost')).click() 19 #循環上傳圖片
20 for i in range(4): 21     find_element_(('id','Editor_Edit_EditorBody_uploadImage')).click() 22     iframes = find_elements_(('css selector','iframe')) 23     driver.switch_to_frame(iframes[1]) 24     # find_element_(('name','file')).send_keys(r'C:\Users\lintao\Desktop\me.jpg')
25     find_element_(('css selector','.qq-upload-button')).click() 26     file_path=r'd:\Pictures\pjy\%s.jpg'%i 27     os.system(r'C:\Users\Administrator\Desktop\ss.exe %s'%file_path) 28  driver.switch_to_default_content() 29     time.sleep(5)
相關文章
相關標籤/搜索