2011-03-07 16 views
6

मैं वर्तमान में सेलेनियम आरसी के साथ परीक्षण स्वचालित कर रहा हूं जो हर घंटे चलती है। सब कुछ सुचारू रूप से अधिकतर समय चलता है लेकिन कुछ बार जहां फ़ायरफ़ॉक्स क्रैश हो जाएगा या सेलेनियम आरसी बस लटकाएगा और इन दो मुद्दों के कारण परीक्षण जारी नहीं है और रोक दिया गया है। क्या कोई जानता है कि जब मैं क्रैश या लटकता हूं तो firefox.exe और java.exe (सेलेनियम इंस्टेंस) को मार सकता है, इसलिए परीक्षण फिर से शुरू हो सकता है। जब मैं फ़ायरफ़ॉक्स या सेलेनियम लटक रहा हूं और स्वचालित रूप से स्क्रिप्ट के माध्यम से इसे मारता हूं तो समस्याएं स्वचालित रूप से पता लग रही हैं।सेलेनियम दुर्घटनाओं को कैसे संभालें

धन्यवाद!

उत्तर

1

सुनिश्चित नहीं हैं कि मैं तुम्हारे लिए परम जवाब है, लेकिन मैं कुछ विचारों की पेशकश कर सकते हैं:

  • सेलेनियम फ़ायरफ़ॉक्स ठंड से निपटने के लिए एक टाइम-आउट करना होगा। आपको यह सुनिश्चित करने के लिए दोबारा जांच करनी चाहिए कि सही ढंग से सेट और काम कर रहा है।
  • जो भी आपके सेलेनियम (जैसे क्रूज़ कंट्रोल या टीम सिटी) चला रहा है, में भी एक टाइमआउट होना चाहिए जो सेलेनियम सर्वर को मार सकता है।
  • लोग अक्सर दिन में एक बार अपने सर्वर को रिबूट करने और सकारात्मक परिणामों की रिपोर्ट करने के लिए वापस लौटते हैं। (मुझे नहीं)
  • मैं वास्तव में आपको इसके मूल कारण को जानने के लिए प्रोत्साहित करता हूं। सेलेनियम निराशाजनक और flaky महसूस कर सकते हैं, लेकिन खोदने के बाद, मैंने हमेशा पाया है कि यह एक निदान समस्या थी जिसे ठीक किया जा सकता है (जैसे this)।

(एसई भयानक चरम पर हमें धक्का:।। हम वास्तव में एक ssh काम TeamCity है कि एक विंडोज़ मशीन में लॉग इन किया है और वहाँ सेलेनियम सर्वर को पुनः आरंभ में शुरू हो रहा लिखा अंतत: हम इसका इस्तेमाल नहीं किया है)

2

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

Runtime.getRuntime().exec("TASKKILL /F /IM Firefox.exe"); 
Runtime.getRuntime().exec("TASKKILL /F /IM iexplore.exe"); 

जहाँ तक का पता लगाने के लिए जब वे दुर्घटना, फायरफॉक्स एक चेतावनी संवाद एक दुर्घटना का संकेत प्रदर्शित करेगा के रूप में। आप इस विंडो के साथ प्रोग्रामिंग रूप से बाहरी उपकरण, जैसे ऑटोआईटी के माध्यम से बातचीत कर सकते हैं, जो आपको आवश्यकता होने पर इस संवाद पर स्वचालित रूप से "ठीक" बटन दबा सकता है। मैंने पाया है कि पॉपअप, क्रैश, चेतावनियां इत्यादि को संभालने के लिए पृष्ठभूमि में लगातार चलने वाली बाहरी ऑटोआईटी स्क्रिप्ट बनाना बहुत उपयोगी है।

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