2014-07-20 14 views
11

का उपयोग करके मैं पॉप अप डायलॉग से फ़ाइलों को स्वचालित रूप से कैसे डाउनलोड करूं? मैं सेलेनियम-पायथन का उपयोग करके पॉप अप डायलॉग से फ़ाइलों को स्वचालित रूप से डाउनलोड करने का प्रयास कर रहा हूं।सेलेनियम-पायथन

फ़ायरफ़ॉक्स पॉपअप इस

enter image description here

की तरह लग रहा "ठीक है"

पर क्लिक मैं इस सवाल का जवाब How do I trap a popup in Selenium 2 python जो मुझे दस्तावेज़ को भेजे गए पाया अनुकरण करना चाहते हैं https://selenium-python.readthedocs.org/en/latest/navigating.html?highlight=popup#popup-dialogs

मैंने इस

alert = driver.switch_to_alert() 
    #alert.send_keys(Keys.RETURN) #No alert is present 

और इस

alert = driver.switch_to_alert() 
    alert.accept() #no alert is present 

अगर मैं pprint.pprint(driver.window_handles) चलाने यह केवल एक ही GUID प्रिंट - दिखा रहा है कि केवल एक ही खिड़की मौजूद है।

तो यदि कोई चेतावनी मौजूद नहीं है और केवल एक खिड़की है - मैं इन फ़ाइलों को कैसे डाउनलोड करूं?

1) सेटिंग्स के साथ एक कस्टम फ़ायरफ़ॉक्स प्रोफ़ाइल जहां डाउनलोड स्थान पहले से तय है और फ़ायरफ़ॉक्स डाउनलोड करने के लिए पुष्टि नहीं मांगता है बनाएँ:

उत्तर

2

आपके पास दो विकल्प। बस googled और एक blog बताते हैं कि कैसे यह

2) का प्रयोग करें sikuli डाउनलोड संवाद बॉक्स पर क्लिक करता है स्वचालित करने के लिए क्या करने के लिए मिल गया। Blog समझाते हुए- सिक्ुली

पीएस का उपयोग कैसे करें - ब्लॉग नहीं पढ़ते, लेकिन मुझे यकीन है कि वे आपको एक सुराग देंगे।

+0

http: // stackoverflow।कॉम/प्रश्न/1176348/एक्सेस-टू-फाइल-डाउनलोड-डायलॉग-इन-फ़ायरफ़ॉक्स – bernie2436

+0

ग्रेट यह पहला विकल्प है जिसका मैं बोलता हूं। – Amey

1
FirefoxProfile fxProfile = new FirefoxProfile(); 
fxProfile.SetPreference("browser.download.panel.shown", false); 
fxProfile.SetPreference("browser.helperApps.neverAsk.openFile", "text/csv,application/vnd.ms-excel"); 
fxProfile.SetPreference("browser.helperApps.neverAsk.saveToDisk", "text/csv,application/vnd.ms-excel"); 
fxProfile.SetPreference("browser.download.folderList", 2); 
fxProfile.SetPreference("browser.download.dir", "c:\\mydownloads"); 
IwebDriver driver = new FirefoxDriver(fxProfile); 
3

अमय के जवाब 1 के आधार पर) और निश्चित रूप Yi Zeng's blog (in ruby) सेलेनियम खुद के हवाले करने के साथ ही इस तरह सिस्टम स्तर संवाद documentation साथ बातचीत नहीं करता है, यहाँ मुद्दा

from selenium import webdriver 
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile 

profile = FirefoxProfile() 
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", 'application/pdf') 
driver = webdriver.Firefox(firefox_profile=profile) 

driver.get(target_url) 
#specific to target_url 
driver.find_element_by_css_selector('a[title="Click to Download"]').click() 
हल करने अजगर का टुकड़ा है ,

profile.set_preference("browser.download.panel.shown", False) 
profile.set_preference("browser.helperApps.neverAsk.openFile","text/csv,application/vnd.ms-excel") 
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/csv,application/vnd.ms-excel") 
profile.set_preference("browser.download.folderList", 2); 
profile.set_preference("browser.download.dir", "c:\\firefox_downloads\\") 
browser = webdriver.WebDriver(firefox_profile=profile) 

इस CSV फ़ाइलों के लिए काम करता है:

8

अजगर में, लेकिन यह जावा के रूप में अच्छी तरह से क्योंकि फ़ायरफ़ॉक्स वरीयताओं में काम करेंगे एक जावास्क्रिप्ट हैं जो भी फ़ाइल प्रकार आप डाउनलोड कर रहे हैं उसके लिए इसे संशोधित करें।

+0

क्रोम के बारे में क्या? मैंने कोड 'विकल्प = विकल्प() विकल्प.add_argument ('- अक्षम-डाउनलोड-अधिसूचना') self.driver = webdriver.Chrome (chrome_options = विकल्प) saveas = actionChains (self.driver) .key_down (कुंजी .CONTROL) .send_keys ('s')। Key_up (Keys.CONTROL) saveas.perform() 'लेकिन यह संवाद के रूप में सहेजें – zubactik

0

अधिकांश ब्राउज़रों (मेरे मामले में फ़ायरफ़ॉक्स) डिफ़ॉल्ट रूप से ठीक बटन का चयन करें। इसलिए मैंने निम्नलिखित कोड का उपयोग कर इसे हल करने में कामयाब रहे। यह मूल रूप से आपके लिए दर्ज करता है और फ़ाइल डाउनलोड होती है।

Robot robot = new Robot(); 

// A short pause, just to be sure that OK is selected 
Thread.sleep(3000); 

robot.keyPress(KeyEvent.VK_ENTER); 
+0

आपको 'रोबोट' कहां मिलता है? –

+0

आयात java.awt.Robot; – shish

+0

यह प्रश्न टैग किया गया है [python] (http://stackoverflow.com/questions/tagged/python)। –

1

मेरी का उपयोग कर और मेरे सेलेनियम यूआई स्वचालन परीक्षण में परीक्षण, फ़ायरफ़ॉक्स प्रोफ़ाइल को विन्यस्त के साथ रोबोट कक्षा की तुलना में अधिक स्थिर है। जैसे सिस्टम गैर-वेबपृष्ठ पॉप-अप को अक्षम/डाउनलोड करें संवाद को अक्षम करें।

FirefoxProfile prof = new FirefoxProfile(); 

ffprofile.setPreference("browser.download.panel.shown", false); 
ffprofile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/zip"); 

//ffprofile.setPreference("browser.download.folderList", 1); // Default to /home/user/Downloads in Linux. 
ffprofile.setPreference("browser.download.folderList", 2); 
ffprofile.setPreference("browser.download.dir", "/tmp"); 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^