2015-05-12 109 views
2

我正嘗試使用硒web驅動程序上傳文件。我得到文件上傳對話框在MacOS和Windows中打開,之後沒有任何反應。想知道爲什麼硒不通過上傳對話框打開文件?無法在http://www.dropzonejs.com上使用python selenium webdriver上傳文件

webdriver的命令,我使用:

wd.get("http://www.dropzonejs.com/") 
wd.find_element_by_css_selector("div.dz-message").click() 
wd.find_element_by_css_selector("input.dz-hidden-input").click() 
elm = wd.find_element_by_xpath("//input[@type='file']") 
elm.send_keys("/Users/bg/Downloads/YOURFILE.PDF") 
elm.submit() 
+0

[硒的webdriver上傳文件(可能的重複http://stackoverflow.com/questions/18823139/selenium -webdriver-upload-file) –

回答

6

不要單擊文件input元素 - 這將觸發一個文件上傳對話框,你可以不通過selenium控制。發送的鑰匙inputsubmit形式:

elm = wd.find_element_by_xpath("//input[@type='file']") 
elm.send_keys("/Users/bg/Downloads/myfile.PDF") 
elm.submit() 

submit()在這種情況下,被稱爲輸入元素 - selenium會找到對應input元素表單並提交。

+0

我已經完全按照您指定的方式進行了嘗試,但文件上傳對話框保持打開狀態,沒有上傳文件。 –

+0

@BarryG我在這裏沒有看到任何通常會觸發文件上傳對話框的東西。這是一個公共場所,我可以嘗試重現這個問題嗎?謝謝。 – alecxe

+0

@ alecxe嘗試http://www.dropzonejs.com/這裏是在該網站上的命令: 高清test_testdropzone(個體經營): 成功=真 WD = self.wd wd.get(「HTTP://點擊() wd.find_element_by_css_selector(「input.dz-hidden-input」)。click() elm = wd.find_element_by_xpath (「// input [@ type ='file']」) elm.send_keys(「/ Users/bg/Downloads/YOURFILE.PDF」) elm.submit() self.assertTrue(success) –

0

我終於找到了我正在尋找的代碼來解決我的問題。我正在進行2小時的研究,以找到解決我的問題的方法。在我的情況下,我需要通過python將我的電腦的圖像發送到一個程序。該頁面只有1個按鈕可以上傳照片和一個發送。 非常感謝您對已經提供的代碼的程序蟒

爲例:

from selenium import webdriver 
browser=webdriver.Chrome() 
browser.maximize_window() 
browser.get(('http://127.0.0.1/namepage.exp')) 
elm = browser.find_element_by_xpath('//*[@id="exp_file"]') # 
elm.send_keys("C:\PycharmProjects\\varios\image.png") 
elm.submit() 
相關問題