2016-03-04 6 views
4

с использованием python3, селен с firefox на windows10: эта программа проста. он перескакивает прямо на страницу объявления новых списков craigslists, загружает несколько фотографий, затем отправляет. проблема с им заключается в том, что я не могу управлять диалоговым окном, чтобы перейти к правильному файлу с селеном.Загрузка фотографий в Craigslist с Python и Selenium

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) 

Ive делал некоторое чтение и я получаю суть, что мне нужно использовать send_keys() к «входному файлу», но им все еще так ново с селеном и программированием в целом, что я не совсем понимаю концепция. моя идея состояла в том, чтобы использовать SendKeys из AutoIt, но я не могу даже понять, почему AutoIt не устанавливается на мой компьютер. так что я надеюсь, что кто-то может пролить немного света на то, как отправить заранее определенный путь, чтобы я мог загружать фотографии. любая помощь приветствуется, спасибо!

ответ

5

Вы не должны работать с <button> элементом, но с <input> вместо этого, так что используйте следующий код:

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

откуда «html5_1ad1qt6re13snm058nqev3tb3» взялось? Я попробовал это и получил ошибку: «Не удалось найти элемент: {« method »:« id »,« selector »:« html5_1ad1qt6re13snm058nqev3tb3 »} ' – indianhearts

+1

О ... Я думаю, что этот' Id' динамически изменен. Попробуйте 'browser.find_element_by_xpath (" // input [@ type = 'file'] "). Send_keys (путь к файлу)' – Andersson

+0

большое спасибо @Andersson, youre amazing – codyc4321