5

मुझे वेबड्राइवर पेजऑब्जेक्ट पैटर्न में उपयोग करने के लिए कठिन समय है। PageObjects पैटर्न और लोड करने योग्य कॉम्पोनेंट्स का उपयोग करने के अपने अनुभव और तरीके साझा करें।PageObjects पैटर्न में WebDriver/सेलेनियम 2 LoadComponents का उपयोग कैसे करें?

पृष्ठऑब्जेक्ट आमतौर पर एक घटक या कार्यक्षमता का टुकड़ा दर्शाता है, यह मेरे लिए पहले हुआ था कि मुझे इसे वास्तव में लोड() में कुछ चीजें करने के लिए उपयोग करना चाहिए और देखें कि यह क्या करता है लोड किया गया है()।

तब मुझे एहसास हुआ कि यह केवल "लोड हो रहा" वस्तुओं (संभवतः आरंभीकरण) के लिए उपयोग किया जाना चाहिए, क्योंकि यह एक वेबसाइट, अपने स्वयं के यूआरएल के साथ प्रत्येक वस्तु के चारों ओर ले जाने के मामले में है। और परीक्षण के लिए ऑब्जेक्ट तैयार है या नहीं, यह जांचने के लिए isLoaded() का उपयोग कर रहा है।

लेकिन यदि आपके पास परीक्षण करने के लिए एक जटिल जावास्क्रिप्ट ऑर्डर सबमिटकर्ता है, तो यह जेएस फ़ाइल अपलोडर का कंपाउंड है, जेएस फॉर्म जो 2 स्वतंत्र भागों पर आधारित है और तीन प्रकार के ऑर्डर हैं, आप कहीं भी नहीं जाते हैं (यूआरएल के संबंध में), केवल तत्वों की स्थिति बदल रही है।

get() विधि पर विचार करें। आप इंटरैक्टिव फॉर्म के साथ पेज में आते हैं। जब पृष्ठ पर फॉर्म मौजूद होता है तो यह लोड होता है। फिर आपके पास form1 और form2 ऑब्जेक्ट्स हैं ... उनके लोड() और isLoaded() विधि को कैसा दिखना चाहिए, वे तुरंत कार्रवाई के लिए तैयार हैं क्योंकि उन्हें किसी भी लोडिंग की आवश्यकता नहीं है, बस उनकी सेवाओं का परीक्षण करें।

यह एक गड़बड़ है, अगर isLoaded() विधि जाँच वस्तु भरी हुई, या वस्तु भरी हुई है कि क्या है कि क्या के लिए इस्तेमाल किया और सेटअप ठीक था है एक नहीं जानता है। लेकिन मुझे लगता है कि पूर्व तरीका सही है और इसे स्थापित करने की वैधता परीक्षण के भीतर सुनिश्चित की जानी चाहिए।

परिदृश्य:

Testing first part of html form - test that field client side validation works 
Testing the second one that depends on the first one 
Testing the following file uploader - upload, canceling, clearing, order, fileIDs 
Testing the overall html form submission - ServerSide validation errors, results 

प्रलेखन कहते हैं:

  • LoadableComponent
  • PageObjects

    1. सार्वजनिक तरीकों वें प्रतिनिधित्व करते हैं ई सेवाओं, स्पष्ट है कि पेज

      मान्य, अपलोड प्रदान करता है, एकाधिक अपलोड करें, रद्द

    2. पेज

      केवल एक चीज है कि मेरे पास होता रहा है के आंतरिक बेनकाब करने के लिए नहीं की कोशिश करो यूनिटटेस्ट्स के लिए चालक उदाहरण छुपाया गया है और सभी फ़ील्ड नामों को रखने के लिए केवल पेज ऑब्जेक्ट्स का उपयोग करें, पेजऑब्जेक्ट्स में सीएसएस क्लास नाम + इनपुट डेटा के साथ पेजऑब्जेक्ट्स और सेवाओं/कार्यक्षमता के बूलियन परिणाम का दावा करें

    3. तरीके अन्य पेज ऑब्जेक्ट्स

      यह उपयोग करने के लिए सबसे कठिन बात है। एक इंटरेक्टिव फॉर्म के लिए 4 पेज ऑब्जेक्ट्स होने के कारण प्राकृतिक महसूस नहीं होता है। वे फॉर्म 1, फॉर्म 2 (फॉर्म 1), अपलोड (फॉर्म 2), सबमिट (अपलोड) की सलाह देते हैं, हालांकि मुझे पिछले ऑब्जेक्ट के संदर्भ में चेनिंग और हैंडिंग बहुत अराजकता मिलती है। परीक्षण विधि में उन सभी पर कॉलिंग() को बेहतर लगता है।लेकिन मुझे लगता है कि यह है कि यह पीछे विचार यह टेस्ट करने के लिए ड्राइवर उदाहरण का पर्दाफाश, लेकिन केवल PageObjects कि चालक उदाहरण का उपयोग कर रहे आंतरिक

    4. एक ही कार्रवाई के लिए अलग-अलग परिणाम विभिन्न तरीकों के रूप में आधारित हैं मुझे लगता है उपयोग करने के लिए नहीं है कि इसका मतलब है कि यह पृष्ठ वस्तु पक्ष पर है कि कार्रवाई की वैधता के बारे नहीं करने का फैसला किया जाना चाहिए, लेकिन टेस्ट टीम

उत्तर

0

पर मैं जब पेज वस्तुओं लेखन थोड़ा अलग दृष्टिकोण है। आपके शब्दों से अनूदित लोड() विधि सशर्त प्रतीक्षा के साथ समाप्त होता पेज सुनिश्चित होता है कि आप क्या चाहते हैं। तब मुझे किसी भी लोडेड() की आवश्यकता नहीं है - या तो मैं वहां हूं या अपवाद फेंक दिया गया है।

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

0

लोड करने योग्य घटक पृष्ठ वस्तु पैटर्न के लिए एक विस्तार है। वेबड्राइवर लाइब्रेरी में लोड करने योग्य कॉम्पोनेंट क्लास टेस्ट केस डेवलपर्स को यह सुनिश्चित करने में मदद करेगी कि पेज या टीएच पेज का एक घटक सफलतापूर्वक लोड हो गया है। यह आपके परीक्षण मामलों को डीबग करने के प्रयासों को काफी कम करता है। पेज वस्तु इस Loadable घटक सार वर्ग का विस्तार करना चाहिए और इसके परिणामस्वरूप, यह निम्न दो विधियों के लिए कार्यान्वयन प्रदान करने के लिए बाध्य है:

संरक्षित सार शून्य लोड()

संरक्षित सार शून्य isLoaded() java.lang.Error

पृष्ठ या घटक जिसे लोड() में लोड किया जाना है और isLoaded() विधियां निर्धारित करती हैं कि पृष्ठ पूरी तरह से लोड हो गया है या नहीं। अगर यह पूरी तरह से लोड नहीं होता है, तो यह एक त्रुटि फेंकता है।

https://code.google.com/p/selenium/wiki/LoadableComponent

+0

क्या आप जानते हैं यदि isLoaded पहले बुलाया जाएगा? अगर हम पहले से ही पेज पर हैं तो पेज को फिर से लोड करने के लिए किसी भी रिडंडेंसी से बचने के लिए। – CodyK

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