2016-03-04 72 views
4

使用python3,selenium with firefox on windows10: 這個程序很簡單。它會直接跳轉到craigslists'發佈新的列表'頁面,上傳多張照片,然後提交。我所遇到的問題是,我無法控制一個對話框來使用硒導航到正確的文件。使用Python和Selenium將照片上傳到Craigslist中

browser = webdriver.Firefox() 
browser.get('https://post.craigslist.org/k/lPbhT6Lh5RGBKb-uS1zr0g/g2NjN?lang=en&cc=us&s=editimage') 
#opens to craigslists 'Upload/Edit Images' page 

add_imgs_btn = browser.find_element_by_id('plupload') 
#find the 'add images' button 

add_imgs_btn.click() 
#clicks the button which opens the dialog box, which is not operable from selenium 
add_imgs_btn.send_keys(filepath) 

我一直在做一些閱讀,我得到我需要使用send_keys()到「輸入文件」的要點,但即時通訊還是那麼有硒和編程一般新的,那我不完全理解的概念。我的想法是使用AutoIt的SendKeys,但我甚至不知道爲什麼AutoIt不會安裝到我的電腦。所以即時通訊希望有人可以對如何發送預先確定的路徑名​​發表一點點看法,以便我可以上傳照片。任何幫助表示讚賞,謝謝!

回答

5

你不應該<button>元素進行操作,但<input>代替,因此使用下面的代碼:

browser.find_element_by_xpath("//input[@type='file']").send_‌​keys(filepath) 
+1

哪裏「html5_1ad1qt6re13snm058nqev3tb3」從何而來?我試過這個,並得到一個錯誤:'無法找到元素:{「方法」:「ID」,「選擇器」:「html5_1ad1qt6re13snm058nqev3tb3」}' – indianhearts

+1

哦...我想這個'ID'是動態變化的。嘗試'browser.find_element_by_xpath(「//輸入[@ type ='file']」)。send_keys(filepath)' – Andersson

+0

非常感謝你@Andersson,你真棒 – codyc4321