2016-03-31 249 views
2

我想使用webdriver選擇一個文件,但遵循其他答案,他們不工作。他們說只是給按鈕一個文件路徑,這不起作用。上傳看起來像這樣點擊按鈕後:用selenium webdriver上傳文件python

enter image description here

這是別人說的做,但不工作:

element = driver.find_element_by_name("file") 
element.send_keys("/home/pavel/Desktop/949IH3GNHAo.jpg") 

如何提交文件一次我在一個webdriver實例?謝謝

+1

你是什麼意思的「不工作」?怎麼了?你能發佈完整的代碼,包括你正在瀏覽的網址嗎?謝謝。 – alecxe

+1

使用sendkeys選擇圖片文件後,您需要再次點擊上傳按鈕不再瀏覽按鈕 –

回答

-1

這個問題在uploading photos to Craigslist with Python and Selenium

def add_photo(self, filepath_to_photo): 
    photo_filepath_input_box = self.driver.find_element_by_xpath("//input[@type='file']") 
    photo_filepath_input_box.send_keys(filepath_to_photo) # "/home/cchilders/photos/myhouse/upperrightbedroom/photo1.png" 
0

上傳窗口是系統窗口,不在web視圖中。硒webdrivers只能控制webview內的東西。您需要將選擇文件的任務交給另一個類似AutoIT的庫。

+1

確定嗎? :https://saucelabs.com/resources/articles/selenium-file-upload –

+0

我還沒有能夠獲得該風格的工作。我會再試一次,我猜 – codyc4321

2

給AutoIT一個嘗試。

這是非常容易使用和完成這項工作。

點擊先用webdriver的腳本上傳按鈕,然後運行與AutoIt的.exe文件:

import subprocess 
subprocess.Popen('[name_of_your_script].exe') 

然後給它一個wait.until,預計使用條件,所以一直等到文件上傳完畢。

下面的示例代碼的AutoIt將選擇一個名爲「AAUPLOADFILE.png」文件:

Local $hWnd=WinWait("[CLASS:#32770]","",10) 

ControlFocus($hWnd,"","Edit1") 

; Wait for 2 seconds. 

    Sleep(2000) 

    ControlSetText($hWnd, "", "Edit1", "AAUPLOADFILE.png") 

    Sleep(2000) 

; Click on the Open button 

    ControlClick($hWnd, "","Button1"); 

一旦你得到了一個腳本編寫,右鍵單擊該文件,然後選擇編譯腳本,這將創建一個.exe文件。

+0

這似乎是合理的阿里。你有什麼可以給你如何傳遞文件名的例子嗎?如果我的python腳本可以通過'FILENAME =「AAUPLOADFILE.png」'等等,我會很高興。我可以PM嗎? – codyc4321

+0

另一個問題是我不使用windows – codyc4321

+1

我從來沒有使用ubuntu/linux進行自動化,對不起,而且AutoIT確實是一個僅限於Windows的應用程序。但是,我發現這是Linux的AutoIT等價物:http://www.semicomplete.com/projects/xdotool/ – Alichino

0

解決了,我也有使用Python和硒上傳問題。 這是因爲上傳的網頁形式不可見,並位於「上傳圖片」下。 (隱藏上傳表格)

所以我已經提出瞭解決方法。

# Try to open page with upload form 
driver.get('https://bla.com/library/browser') 

# Waiting for upload element with name upload-search-block 
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "upload-search-block"))) 

# Relocate hidden upload form using JS 
driver.execute_script("document.getElementById('upload-search-block').style.left='200px';") 
driver.execute_script("document.getElementById('upload-search-block').style.top='170px';") 

# And upload file in the end 
upload = driver.find_element_by_id('upload-search-block') 
upload.send_keys('/tmp/custom_doc.docx') 

祝你好運。

相關問題