2012-05-21 8 views
7

मैं सोच रहा था कि अगर मुझे पता चल जाए कि मुझे सेलेनियम वेबड्राइवर के माध्यम से फ़ायरफ़ॉक्स क्यों चल रहा है, तो मुझे कोई आश्चर्य हो सकता है।रेडहाट पर सेलेनियम 2 वेबड्राइवर के तहत फ़ायरफ़ॉक्स क्यों शुरू नहीं होगा 5.6

self.driver=webdriver.Firefox() 

मैं अपने डेस्कटॉप पर एक खाली संवाद मिल: क्या होता है जब मैं चलाया जाता है। मैं रेडहाट 5.6 और पर चल रहा हूं मेरा सेलेनियम संस्करण 2.21.3 है।

Popen([self._start_cmd, "-slient"], stdout=PIPE, stderr=STDOUT, env=self._filefox_env).wait() 

मैं एक cmd शीघ्र खोल दिया और: मैं जहाँ तक मैं जा सकते हैं और क्या मैं कोड निर्धारित कर सकते हैं से firefox_binary मॉड्यूल में निम्नलिखित कोड पर खाली संवाद लाने के बाद जमा कोड डिबग मैन्युअल रूप से उपरोक्त आदेश चलाया और ऐसा कोई खाली संवाद प्रकट नहीं होता है। इससे मुझे लगता है कि फ़ायरफ़ॉक्स त्रुटि नहीं है। मुझे नहीं पता कि इसके लिए त्रुटि दिखाई देगी। कोई विचार?

अद्यतन

मैं centos 6 स्थापित किया है और फ़ायरफ़ॉक्स 10.0.6 और सेलेनियम webdriver उस संस्करण

अद्यतन

एक तरफ centos 6 का उपयोग करने से

मैं भी इस समस्या की जरूरत के साथ काम किया स्थापित redhat पर हल किया जाना चाहिए तो यहां अधिक जानकारी और मुझे क्या मिला है। के रूप में इसे हल करने की जरूरत है मैं इस पर एक इनाम रखा जाएगा:

मैं इस पर थोड़ा और अधिक खोदा और पाया कि समस्या एक 32 बिट lib का उपयोग कर सेलेनियम के साथ है। मेरे पास Redhat Enterprise Linux सर्वर पर सेलेनियम संस्करण 2.25.0 है जो फ़ायरफ़ॉक्स ESR 10.0.6 (64 बिट) का उपयोग कर 5.6 (x86_64) रिलीज़ करता है। मैं firefoxBinary कक्षा में _start_from_profile_path पद्धति को बदल कर देखने के लिए जहां समस्या है:

p=open("/tmp/ffoutput.txt", "w+") 
Popen([self._start_cmd, "-silent"], stdout=p, stderr=STDOUT, env=self._firefox_env).communicate() 

और मैं /tmp/ffoutput.txt पूंछ मैंने पाया कि सेलेनियम एक 32 बिट lib उपयोग करने के लिए कोशिश कर रहा है:

Failed to dlopen /usr/lib/libX11.so.6 
dlerror says: /usr/lib/libX11.so.6: wrong ELF class: ELFCLASS32 

यह संदेश लगातार होता है और फ़ायरफ़ॉक्स एक खाली संवाद दिखाने के साथ लटका हुआ है। मैंने इस समस्या को गुमराह किया और कुछ लोगों को शिकायत की लेकिन कोई समाधान नहीं हुआ (मैंने 32 बिट लिब को 32 बिट लिब में ले जाने के बाद 32 बिट लिब डीआईआर को सॉफ्टलिंक करने की कोशिश की लेकिन इसने जीको को दुर्घटनाग्रस्त कर दिया, मैंने निरंतर त्रुटियों को/dev/शून्य लेकिन यह कुछ हल नहीं हुआ)।

+0

कोई अपवाद नहीं, कोई लॉग नहीं? हुह। क्या यह कभी काम कर रहा है, या यह WebDriver के माध्यम से एफएफ चलाने की आपकी पहली कोशिश है? क्या आप इसे संरक्षक को पथ प्रदान करके फ़ायरफ़ॉक्स शुरू करने का प्रयास कर सकते हैं? –

+0

यह मेरा पहला समय रेडहाट बॉक्स पर है। मैं इसे विंडोज़ बॉक्स पर चला रहा था। मैंने self._start_cmd की जांच की और पाया कि यह फ़ायरफ़ॉक्स का सही सही पथ है।जैसा कि मैंने कहा था कि मैंने डीबग के तहत जांच की थी कि किस आदेश का उपयोग किया जा रहा था और मैंने पाया कि यह/usr/bin/firefox -silent था। मैं एक टर्मिनल में भाग गया और कोई त्रुटि नहीं मिली। मैं भी चला गया/usr/bin/फ़ायरफ़ॉक्स (बिना क्लाइंट) और फ़ायरफ़ॉक्स प्रकट होता है। जब वेबड्राइवर उपयोगकर्ता उपरोक्त कोड फ़ायरफ़ॉक्स नहीं खुलता है और redhat डेस्कटॉप में एक खाली संवाद दिखाता है। – amadain

+0

मुझे कुछ भी बताने के लिए/var/log/संदेशों में कुछ भी नहीं जोड़ा गया है (जहां फ़ायरफ़ॉक्स लॉगिंग रखता है)। – amadain

उत्तर

3

आप इस मुद्दे सेलेनियम http://code.google.com/p/selenium/issues/detail?id=2852

में सूचना दी 64Bit Linux distros पर चारों ओर काम करने के लिए बात कर रहे हैं इन आदेश जारी करने के लिए है:

sudo mv /usr/lib/libX11.so.6 /usr/lib/libX11.so.6.old 
sudo ln -s /usr/lib64/libX11.so.6.3.0 /usr/lib/libX11.so.6 

यह मेरा बॉक्स पर मेरे लिए काम किया।

+0

दूसरे अपडेट से "मैंने 32 बिट लिब को 32 बिट लिब में ले जाने के बाद 32 बिट लिब डीआईआर को सॉफ्टलिंक करने का प्रयास किया लेकिन इसने गाको को दुर्घटनाग्रस्त कर दिया" तो दुर्भाग्य से यह मेरे लिए काम नहीं करता – amadain

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