selenium webdriver HtmlUnitDriver(HtmlUnit) बनाम GhostDriver(PhantomJS)?




selenium-webdriver htmlunit-driver (2)

हम अपने हेडलेस ब्राउजर ड्राइवर समाधान को चुनने के बीच में हैं जो सेलेनियम वेबड्राइवर के कुछ कार्यान्वयन होंगे। GhostDriver , जो एक तरफ बैकएंड में HtmlUnitDriver और HtmlUnitDriver को HtmlUnit है जो दूसरे पर HtmlUnit पर आधारित है।

PhantomJS वेबकिट, सफारी के प्रतिपादन इंजन का उपयोग करता है, जबकि पृष्ठों को प्रस्तुत करने के लिए HtmlUnitDriver राइनो इंजन का उपयोग करता है, जो कि कोई अन्य ब्राउज़र उपयोग नहीं करता है (यह केवल "सिमुलेटिंग" ब्राउज़र व्यवहार है। आखिरी तथ्य एक कॉन के रूप में माना जाता है, क्योंकि प्रतिपादन व्यवहार महत्वपूर्ण रूप से भिन्न हो सकता है लोकप्रिय ब्राउज़रों।

हमारी राय में, फैंटॉमजेएस एक बहुत मजबूत उम्मीदवार है। लेकिन, हम सबकुछ नहीं जानते :) क्या हमारे विचारों के साथ हमें अन्य विचार-विमर्श और व्यापार-बंद करना चाहिए? अन्य परिदृश्य जहां HtmlUnitDriver एक बेहतर समाधान हो सकता है?


कई अनुभवहीन ब्राउज़रों के साथ अपने अनुभव से, मैं कहूंगा:

HtmlUnitDriver : सभी कार्यान्वयनों में से सबसे तेज़, मैं सरल, स्थिर पृष्ठों, विशेष रूप से जावास्क्रिप्ट के बिना उन लोगों के लिए सही हूं। किसी भी दूरस्थ रूप से जटिल पृष्ठ में समस्याएं उत्पन्न होती हैं - यह मेरा व्यावहारिक अनुभव है भले ही मैं विस्तार से उचित न हो। डेमो पृष्ठों पर सेलेनियम सुविधाओं का परीक्षण करने के लिए बिल्कुल सही, स्थिति पृष्ठों को स्क्रैप करना आदि।

फैंटॉम जेएसड्राइवर (फैंटॉमजेएस + घोस्ट ड्रायवर): जितना तेज़ नहीं होगा उतना तेज़ हो सकता है जितना आप डेस्कटॉप ब्राउज़र बनाम कर सकते हैं, हालांकि फ़ायरफ़ॉक्स + xvfb से सेट करना बहुत आसान है। डिफॉल्ट स्क्रीनशॉट द्वारा थोड़ा अजीब लग सकता है, लेकिन आमतौर पर ऐसा लगता है क्योंकि फ़ैंटॉमजेएस एक संकीर्ण विंडो पर डिफ़ॉल्ट रूप से सेट नहीं होता है जब तक कि स्पष्ट रूप से सेट न हो (क्यों के लिए नीचे पढ़ें)।

अद्यतन: मेरे अन्य उत्तर से, PhantomJS संस्करणों पर थोड़ा और विस्तार।

सफारी की तरह, फैंटॉमजेएस प्रतिपादन के लिए WebKit का उपयोग करता है (उदाहरण के लिए फ़ायरफ़ॉक्स गेको का उपयोग करता है)

विभिन्न फैंटॉमजेएस संस्करण विभिन्न वेबकिट संस्करणों के खिलाफ बनाए गए हैं। फैंटॉमजेएस 2.x वेबकिट 538.एक्स uses , जो इसे सफारी 7 या 8 के बराबर बनाता है। जबकि फैंटॉमजेएस 1.9.8 वेबकिट 534.34 uses , जो सफारी 5 के बराबर है।

यह आपके लिए एक मुद्दा हो सकता है, क्योंकि Google सफारी 5 को "पुराना" ब्राउज़र निर्धारित करता है और इसलिए संभावित रूप से अपने खोज पृष्ठों को अलग-अलग प्रस्तुत करेगा।

इसलिए फ़ैंटॉमजेएस 2.x का उपयोग सुनिश्चित करने से आप प्रतिपादन मतभेदों को कम कर सकते हैं कि बहुत से लोग बनाम डेस्कटॉप ब्राउज़र की रिपोर्ट करते हैं।

SlimerJS एक और दिलचस्प संभावना है। हालांकि, मुझे अभी तक विश्वसनीय रूप से पर्याप्त काम करने के लिए नहीं मिला है।

मैंने कभी भी HtmlUnitDriver या PhantomJSDriver के साथ विश्वसनीयता समस्याएं नहीं रखी हैं (केवल एक ही परेशानी एक HttpClient 4.5 / HtmlUnit 2.17 असंगतता समस्या थी )।

(HTTP अनुरोधों को संशोधित करने के बारे में टिप्पणी के जवाब में, मैं व्यक्तिगत रूप से वेबड्राइवर एपीआई पर चिपकने की सलाह देता हूं और ब्राउज़र-विशिष्ट सुविधाओं का लाभ लेने के बजाय अनुरोध और प्रतिक्रियाओं को BrowserMob करने के लिए ब्राउज़रमोब जैसे प्रॉक्सी का उपयोग करता हूं।)

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

यह भी देखें (शायद): http://www.guru99.com/selenium-with-htmlunit-driver-phantomjs.html और https://www.quora.com/Software-Testing/How-does-PhantomJS-compare-to-Selenium


मैंने पिछले कुछ वर्षों में कुछ परियोजनाओं में फैंटॉमजेएस का उपयोग किया है, लेकिन इसके साथ अक्सर समस्याएं होती हैं। उदाहरण के लिए क्रोम, फ़ायरफ़ॉक्स, इंटरनेट एक्सप्लोरर से अलग व्यवहार करने वाले पृष्ठों पर जावास्क्रिप्ट। कुछ पेज बस लोड नहीं हो रहे हैं, संभवतः रीडायरेक्ट के कारण, लेकिन मैं सकारात्मक नहीं हूं (उदाहरण के लिए पृष्ठों में keycloak लॉग)।

मैंने HtmlUnit का उतना उपयोग नहीं किया है, लेकिन जैसा कि मैंने इसे टाइप किया है, यह keycloak लॉगिन पृष्ठों के साथ परीक्षणों पर मेरे लिए उपर्युक्त प्रेत मुद्दों में से कुछ से परहेज कर रहा है।





htmlunit-driver