2011-03-17 21 views
8

जाहिर है, प्रश्न का उत्तर कई पर्यावरणीय कारकों पर निर्भर करता है।HtmlUnitDriver कितना विश्वसनीय है?

में सामान्य, मैं सोच रहा हूँ क्या लोगों के अनुभवों HtmlUnitDriver एक विश्वसनीय उपकरण है कि "विश्वसनीय" हो सकता है एक वेबसाइट मूल रूप से एक ही तरह से अन्य ब्राउज़रों कर नेविगेट करने के लिए के रूप में के साथ कर रहे हैं।

बेशक, मुझे एहसास है कि "अन्य ब्राउज़रों के तरीके" बहुत घबराहट है; स्वाभाविक रूप से हर ब्राउज़र में इसके quirks होगा। लेकिन मैं एक ऐसे प्रोजेक्ट पर हूं जहां हमारे पास सैकड़ों स्वीकृति परीक्षण परिदृश्य हैं (JBehave में लिखे गए हैं) और FirefoxDriver और InternetExplorerDriver का उपयोग करके, उन सभी को चलाने में दो घंटे लगते हैं, जो निरंतर एकीकरण दृष्टिकोण से किसी प्रकार का मोटा होता है। तो मैं सोच रहा हूँ अगर यह कम से कम संभव है कि हम अपने स्वीकृति परीक्षणों पर ज्यादातर समान व्यवहार (और शायद हम परीक्षण के एक मुट्ठी भर उम्मीद कर सकता है के साथ HtmlUnitDriver का उपयोग करें और बहुत तेजी से बार उम्मीद करना HtmlUnitDriver का उपयोग कर असफल करने के लिए स्विच कर सकते हैं और विशेष रूप से उन परीक्षणों को ब्राउज़र-आधारित ड्राइवर के साथ चलाएं)।

हमारा यूआई GWT का उपयोग करता है, जो चीजों को जटिल या जटिल नहीं कर सकता (मुझे नहीं पता)।

असल में, दूसरों के अनुभव में, HtmlUnitDriver लगभग एक और ब्राउज़र के साथ काम करता है, या यह वास्तव में केवल न्यूनतम जावास्क्रिप्ट के साथ बहुत ही सरल HTML वेबसाइटों के लिए उपयुक्त है और एंटरप्राइज़ वेब एप्लिकेशन के लिए उपयोग नहीं किया जाना चाहिए?

उत्तर

8

HtmlUnitDriver का उपयोग करने के अपने अनुभवों से मैं कहूंगा कि यदि आप अपने परीक्षण लिखते समय इसे अपने बेसलाइन ब्राउज़र के रूप में उपयोग नहीं करते हैं तो उन्हें उपयोग करने के लिए इसे परिवर्तित करना एक दुःस्वप्न बन जाता है। जब जावास्क्रिप्ट भारी साइटों की बात आती है तो यह विशेष रूप से सच है।

इसका मुख्य कारण HTMLunit का स्पष्ट अंतर्निहित उपयोग है, जो डिफ़ॉल्ट रूप से, राइनो जावास्क्रिप्ट इंजन का उपयोग करता है। अतीत में मुझे हमेशा यह निर्दिष्ट करना पड़ता था कि HtmlUnitDriver फ़ायरफ़ॉक्स के जावास्क्रिप्ट इंजन का उपयोग करके htmlunit प्रारंभ करें। अधिकांश भाग के लिए, जावास्क्रिप्ट मुद्दों को हल किया गया जो मैं HtmlUnitDriver का उपयोग करके परीक्षण चलाते समय ढूंढ रहा था।

सबसे बड़ी मुद्दों मैं का सामना करना पड़ा जब वह प्रत्येक ब्राउज़र के लिए एक ही परीक्षण कोड का उपयोग कर के लिए आया था में से एक था, तो परीक्षण के अंतर्गत साइट पर, यूआई डेवलपर्स ऐसे onClick() के रूप में जावास्क्रिप्ट घटनाओं सौंपा था इस तरह के एक <span> जैसे तत्वों HTML करने के लिए।

इस का कारण यह है कि आप एक WebElement <span> का प्रतिनिधित्व करने पर WebDriver के .click() विधि का उपयोग कर रहा है, तो htmlunit कुछ भी नहीं होता है (यह उम्मीद एक onClick() इस तरह के एक <input> के रूप में तत्वों पर कहा जा करने के लिए) है। इस के आसपास जाने के लिए मुझे जावास्क्रिप्ट में click() ईवेंट मैन्युअल रूप से कॉल करना पड़ा। आप इसे वेबड्राइवर के जावास्क्रिप्ट एक्स्सेलर का उपयोग करके या वेबड्राइवर बैकडेलिनियम और सेलेनियम के .fireEvent() method का उपयोग करके कर सकते हैं।

इसलिए यदि आपकी साइट ऐसी घटनाओं का उपयोग करती है तो मैं कहूंगा कि HtmlUnitDriver का उपयोग करने के लिए स्विचिंग एक बड़ा कार्य हो सकता है।

इसके बावजूद, मैं वास्तव में अपने सभी परीक्षणों के लिए HtmlUnitDriver का उपयोग करता हूं। हालांकि, मैं कुछ समय पहले सभी को खोजने की पीड़ा से गुजर चुका था, इसलिए अब परीक्षण लिखते समय एचटीएमएल यूनिट ड्रायवर को मेरे बेसलाइन ब्राउज़र के रूप में उपयोग करें।

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