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)