2014-01-20 60 views
0

我有一個python腳本,試圖從我的電腦上傳文件到web應用程序。 我通過WebDriver按下瀏覽器中的特定上傳按鈕,然後打開一個Win7資源管理器窗口,供我導航並選擇要上傳的文件。 我怎麼能用pywinauto操縱這個窗口?使用WebDriver&PyWinAuto上傳文件

可選:這是否也可以在Linux中完成(有一個適當的庫我想)?

這是我的示例代碼:

wd.find_element_by_css_selector("img.editLecturesButtons.fromVideo").click() 
#switch to the lightbox 
wd.switch_to_frame(int("1")) 
#hit upload 
wd.find_element_by_xpath("//*[@id='fileUpload']").click() 
#TODO 
import os,pywinauto.application 
file = os.path.normpath("C:\Users\me\Desktop\image.jpg") 
.... 
+0

大多數Webdriver用戶發現改變順序爲「發送文件路徑到輸入元素」然後「點擊上傳/提交按鈕」。你試過這個嗎?它可以讓事情變得更容易,因爲它很難與文件上傳管理器交互。 –

+0

我已閱讀有關此解決方案,但我認爲它不適用於我。在Web應用程序內部,我按下按鈕並出現一個燈箱。應用程序使用Filepicker API上傳和轉換文件。我發現的特定按鈕的html如下: –

+0

回答

0

我與馬克同意,你應該嘗試的webdriver方法。對於pywinauto,代碼可能如下所示:

import pywinauto 

pwa_app = pywinauto.application.Application() 
w_handle = pywinauto.findwindows.find_windows(title=u'Open', class_name='#32770')[0] 
window = pwa_app.window_(handle=w_handle) 
ctrl = window['Name'] 
ctrl.SetText(file) 
ctrl = window['OK'] 
ctrl.Click() 

這種溶劑僅適用於Windows,因爲pywinauto使用win32 api。

+0

我會嘗試pywinauto方法,雖然生產代碼將在Ubuntu上運行。 –

相關問題