1. 程式人生 > >借助autoit操作上傳下載對話框(參數化)

借助autoit操作上傳下載對話框(參數化)

net htm 名稱 上傳 exe pla only cmd board

蟲師有一篇文章寫的不錯,鏈接如下:http://www.cnblogs.com/fnng/p/4188162.html

他的文章把upload.exe需要上傳的文件寫死了,下面的內容作為補充。

如果不想把上傳過程寫死,例如,想在程序中指定要上傳的文件,把文件路徑作為參數傳遞給upload.exe進行上傳,也是可以的,autoit可以使用參數化做到這一點,見下面的autoit腳本:

[plain] view plain copy
  1. ControlFocus("打開","","Edit1")
  2. WinWait("[CLASS:#32770]","",10)
  3. ControlSetText("打開","","Edit1",$CmdLine[1])
  4. Sleep(2000)
  5. ControlClick("打開","","Button1");

上面的代碼指定了打開的窗口名稱為“打開”,並且使用$CmdLine[1]來指定upload.exe需要的唯一參數。調用該upload.exe的python代碼如下:

[python] view plain copy
  1. browser.find_element_by_id("crop_logo").click() #首先需要使用webdriver點擊web頁面的控件,彈出上傳文件對話框後,這時,autoit腳本就可以尋找到上傳文件對話框,並進行autoit腳本中的預設動作。
  2. # upload.exe接收一個參數,就是要上傳的文件路徑,目前只支持上傳文件對話框是"打開"的windows窗口
  3. exe_path=base_dir+"\\resource\\upload.exe"
  4. file_path=base_dir+"\\resource\\img.png"
  5. cmd=exe_path+" "+file_path
  6. ps=subprocess.Popen(cmd)
  7. ps.wait()

註:調用upload.exe也可使用subprocess模塊,比os模塊跟更好用。

如下:

[python] view plain copy
  1. ps=subprocess.Popen(cmd)
  2. ps.wait()


了解了上傳的實現過程,那麽下載也是一樣的。

借助autoit操作上傳下載對話框(參數化)