2011-03-02 22 views
5

में फ़ाइल चुनने के लिए ऐप्पलस्क्रिप्ट का उपयोग करना मैं कुछ स्वचालन कोड (मुख्य रूप से रूबी सेलेनियम में) लिखने की कोशिश कर रहा हूं। कुछ बिंदु पर, सफारी में एक फ़ाइल चयनकर्ता खोला जाता है ताकि उपयोगकर्ता अपलोड के लिए एक फ़ाइल का चयन कर सके। सेलेनियम इसे संभाल नहीं सकता है, लेकिन मुझे लगता है कि ऐप्पलस्क्रिप्ट सक्षम होना चाहिए। मैं ऐप्पलस्क्रिप्ट के लिए नया हूं और फ़ाइल चयनकर्ता संवाद को स्वचालित करने वाले किसी के बॉयलरप्लेट कोड को खोजने में सक्षम नहीं हूं। मैं ऐप्पलस्क्रिप्ट दस्तावेज़ों के माध्यम से पढ़ रहा हूं, लेकिन कोई विचार सबसे उपयोगी होगा।सफारी

+0

क्या आप फाइल चयनकर्ता खोलने के बाद प्रोग्रामरी रूप से सफारी को एक विशिष्ट फ़ाइल अपलोड करने की कोशिश कर रहे हैं, या सफारी को पहले स्थान पर एक चुनने वाला खोलने दें? – Asmus

+0

पूर्व। सेलेनियम एक लिंक पर क्लिक करता है जो एक सफारी फ़ाइल चयनकर्ता खोलता है, फिर मैं अपने ऐप्पलस्क्रिप्ट को फ़ाइल स्थान के साथ कॉल करता हूं, और हम अच्छे हैं। कम से कम मुझे उम्मीद है - बस इसे आजमाएं। ;) –

उत्तर

4

कुछ और खोज और मैं एक महान जवाब मिला: Applescript file dialog with UI scripting

यहाँ मैं का उपयोग कर समाप्त हो गया है:

on run argv 
tell application "Safari" 
    activate 

    -- Usage check 
    set argc to count argv 
    if argc is not greater than 0 then 
     return "Usage: SafariFileChooser file_name [window_name]" 
    end if 

    -- The file we will choose to open 
    set file_name to item 1 of argv 

    -- Flip to the named window, if specified 
    if argc is equal to 2 then 
     set window_name to item 2 of argv 
     set flip_count to index of window window_name 
     repeat (flip_count - 1) times 
      activate 
      tell application "System Events" to keystroke "`" using command down 
     end repeat 
    end if 

    -- Interact with the dialog using System Events (thanks mcgrailm) 
    tell front window 
     activate 
     tell application "System Events" 
      keystroke "g" using {shift down, command down} 
      keystroke file_name 
      delay 1 
      keystroke return 
      delay 1 
      keystroke return 
     end tell 
    end tell 
end tell 
return 0 

अंत रन

0

एक अन्य विकल्प मैं बस की खोज की निर्देशिका निर्दिष्ट करने के लिए है कमांड लाइन का उपयोग करके:

do shell script "defaults write com.apple.Safari NSNavLastRootDirectory /path/to/directory" 

इस तरह से आप सी यूआई स्क्रिप्टिंग में थोड़ा कम करें। फ़ाइल चयनकर्ता खोलने से पहले इस आदेश को चलाएं, और यह आपको निर्दिष्ट निर्देशिका में डाल देगा। इस निर्देशिका में आपको आवश्यक सभी फाइलें शामिल करें, और आप केवल उन सभी का चयन करने के लिए स्क्रिप्ट कमांड + ए कर सकते हैं, और लौट सकते हैं।