2012-03-27 16 views
5

के बराबर जावा मैं पिछले दो दिनों से जावा के जरिए क्रोम ड्राइवर के लिए ड्राइवर प्राथमिकताओं को सेट करने के लिए कोई रास्ता नहीं ढूंढ रहा हूं।सेलेनियम 2 क्रोम ड्राइवर वरीयताएं जावा रूबीबिंडिंग्स

मुझे रूबी वीआईए रूबी बाइंडिंग में एक समाधान मिला है और मुझे यह जानना है कि जावा जावा समतुल्य रेखा है जिसके लिए मैं इसका उपयोग कर सकता हूं।

गहरे लाल रंग का कोड निम्नलिखित है:

profile = Selenium::WebDriver::Chrome::Profile.new 
profile['download.prompt_for_download'] = false 
profile['download.default_directory'] = "/path/to/dir" 

driver = Selenium::WebDriver.for :chrome, :profile => profile 

खोज मैंने पाया कि क्रोम एक प्रोफाइलर मैं FirefoxProfile वर्ग की तरह इस्तेमाल कर सकते हैं नहीं है, इसलिए मैं बजाय DesireCapabilities वर्ग का उपयोग शुरू किया है।

Map<String, String> prefs = new Hashtable<String, String>(); 
prefs.put("download.prompt_for_download", "false"); 
prefs.put("download.default_directory", "/path/to/dir"); 
prefs.put("download.extensions_to_open", "pdf"); 

DesiredCapabilities capabilities = DesiredCapabilities.chrome(); 
capabilities.setCapability("chrome.prefs", prefs); 
dr = new ChromeDriver(capabilities); 

हालांकि मैं इस काम के प्राप्त करने में सक्षम नहीं था, डिफ़ॉल्ट: इस समस्या को मैंने पाया मैं capabilities.setCapabilitiy के माध्यम से "स्विच" और "वरीयता" सेट कर सकते हैं कि और निम्नलिखित के साथ समाप्त हो गया में आगे की जांच पड़ताल के बाद डाउनलोड निर्देशिका को एक बार शुरू होने पर निर्दिष्ट निर्देशिका में कभी नहीं बदला गया था। मुझे यकीन है कि अगर मैं इस क्षमता को निर्धारित करने की कोशिश कर रहा हूं या समस्या कहीं और है तो कोई समस्या है।

अंत में मैं अंत में इस्तेमाल किया समाधान यहाँ प्रस्तावित:
http://dkage.wordpress.com/2012/03/10/mid-air-trick-make-selenium-download-files/

लेकिन मुझे पता है कि अगर यह करने के लिए संभव है चाहते हैं यह अधिक सफाई से लेकिन सिर्फ प्राथमिकताओं को सेट करने के बजाय सीधे यूआई

का उपयोग कर

किसी भी मदद की सराहना की है, धन्यवाद!

अद्यतन:
हैरानी की बात है संस्करण 2.24.1 करने के लिए सेलेनियम 2 को अद्यतन करने के बाद (और खिड़कियों 22 क्रोम के लिए), मैप्स के साथ ऊपर कोड की उम्मीद काम के रूप में, केवल समस्या अब है कि वे का उपयोग पदावनत कन्स्ट्रक्टर क्रोमड्राइवर (वांछित क्षमताओं क्षमताओं), और इसके बजाय मैं क्रोमऑप्शन क्लास का उपयोग करने की सलाह देता हूं, जिसे मैं उपर्युक्त परिदृश्य के लिए काम नहीं कर सकता।

नीचे दोनों ChromeOptions और DesiredCapabilities के उपयोग समझा विकि पृष्ठ है: http://code.google.com/p/chromedriver/wiki/CapabilitiesAndSwitches

उत्तर

2

रूबी बाइंडिंग वास्तव में फैलता है कि करने के लिए:

{ 
    "download": { 
     "prompt_for_download": false, 
     "default_directory": "/path/to/dir" 
    } 
} 

अपने जावा वरीयता के निर्माण की कोशिश करो कि जैसे वस्तु और अगर देखना यह काम करता हैं। स्ट्रिंग बनाम बूलियन झूठी भी एक मुद्दा हो सकता है।

+0

सुझाव के लिए धन्यवाद, मैंने यह नहीं देखा कि बाइंडिंग इस तरह विस्तारित है। दुर्भाग्यवश यद्यपि ऐसा करने से अभी भी मदद नहीं मिली है (मैंने "prompt_for_download" को बाहर रखा था क्योंकि क्रोम पहले से ही किसी समस्या की संभावना से बचने के लिए डिफ़ॉल्ट रूप से करता है) – Zero4573

0

इस (मेरी जावा जो काफी जंग लगी है माफ कर दो, लेकिन उम्मीद है कि आपको अंदाजा हो) की कोशिश करो

Dictionary download = new Dictionary(); 
download["default_directory"] = "/path/to/dir"; 
Dictionary prefs = new Dictionary(); 
prefs["browser"] = download; 

DesiredCapabilities capabilities = DesiredCapabilities.chrome(); 
capabilities.setCapability("chrome.prefs", prefs); 
WebDriver driver = new ChromeDriver(capabilities); 

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

+0

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

+0

मुझे आश्चर्य है कि क्या आप एक जेसन स्ट्रिंग बनाते हैं उदाहरण के लिए उदाहरण के लिए क्षमताओं .setCapability ("chrome.prefs", "{\" डाउनलोड \ ": {\" default_directory \ ": \"/path/to/dir \ "}}; – KailuoWang

+0

मैं बस कोड को ब्राउज़ करता हूं ऐसा लगता है कि मैंने जो सुझाव दिया है वह शायद काम नहीं करेगा। रूबी क्रोम प्रोफाइल क्लास क्रोम वरीयता का समर्थन करने के लिए क्रोम प्रोफाइल फ़ाइल संरचना के साथ एक भौतिक ज़िप फ़ाइल बनाता है। मुझे जावा में ऐसा सुविधा कोड नहीं मिला। जावा में एक फ़ायरफ़ॉक्स प्रोफाइल है जो फ़ायरफ़ॉक्स के लिए समान चीज करता है, लेकिन जाहिर है कि क्रोम के लिए काम नहीं करेगा। – KailuoWang

0

नए संस्करण (मैंने क्रोम 44.0.2403.125, सेलेनियम 2.47.1, और क्रोमड्राइवर 2.17 का परीक्षण किया।340128) निम्नलिखित के साथ काम करें:

ChromeOptions options = new ChromeOptions(); 
Map<String, Object> prefs = new HashMap<String, Object>(); 
prefs.put("download.default_directory", "/path/to/directory"); 
options.setExperimentalOption("prefs", prefs); 
ChromeDriver chromeDriver = new ChromeDriver(options); 
संबंधित मुद्दे