2012-05-25 14 views
5

का उपयोग कर स्वचालित ब्राउज़र परीक्षण मैं सभी प्रकार के विभिन्न तरीकों का उपयोग करके कई हफ्तों के लिए ब्राउज़र परीक्षण को स्वचालित करने के तरीके पर शोध कर रहा हूं। सेलेनियम वेबसाइट बहुत अस्पष्ट है जिस पर लेने का सबसे अच्छा मार्ग है।सेलेनियम, नुनिट, सेलेनियम ग्रिड, सी #, वेबड्राइवर/रिमोट कंट्रोल

मैं

  1. सेलेनियम Webdriver
  2. रिमोट कंट्रोल
  3. सेलेनियम ग्रिड
  4. अपाचे चींटी
  5. Nunit (और बाकी काफी सब कुछ आप ऐसा करने की जरूरत सकता है)
  6. स्थापित किया है

मैं अंतिम y खुद को कोशिश कर छोड़ दो और ऐसा करने का सबसे अच्छा तरीका जानना चाहते हैं।

मैं करने के लिए

  1. लोड विभिन्न ब्राउज़रों के एक नंबर
  2. लोड आभासी मशीनों (जो मैं स्थापित किया है)
  3. के एक नंबर पर एक ही वेब पेज पर एक ही वेबपृष्ठ में सक्षम होना चाहते हो विभिन्न ब्राउज़र परिणामों की तुलना में स्नैपशॉट लेने में सक्षम।

मुझे सी # में प्रोग्रामिंग का ज्ञान है और मैं नूनिट के माध्यम से अपने परीक्षण चलाने के लिए पसंद करूंगा।

क्या कोई मुझे निर्देश दे सकता है या मुझे उस वेबसाइट पर इंगित कर सकता है जो पहले से ही है? धन्यवाद।

+0

उल्लेख कर सकते हैं जब आप कहते हैं कि '1 का संदर्भ लें। एक ही वेबपृष्ठ को कई अलग-अलग ब्राउज़रों पर लोड करें 'क्या आपका मतलब एक बार में है? या अनुक्रमिक रूप से? –

+0

एक बार में। तो एक ही वेबपृष्ठ लोड करने के लिए कई ब्राउज़र खोलें। – lbrown

+0

क्या आपके लिए एमबीनिट पर स्विच करना संभव है? कुछ जांच के बाद मैं निष्कर्ष निकाला कि नूनिट समांतरता के लिए सबसे अच्छा साधन नहीं है। –

उत्तर

8

मैंने सेलेनियम वेबड्राइवर के साथ जूनिट का उपयोग करके एक टेस्ट फ्रेमवर्क बनाया है जो आपके प्रत्येक अंक को संतुष्ट करता है। हालांकि यह बिल्कुल ठीक नहीं है कि आप क्या पूछ रहे हैं, मुझे लगता है कि यह आपके लिए फायदेमंद हो सकता है।

लोड विभिन्न ब्राउज़रों

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

  • IE8 के साथ विंडोज और फ़ायर्फ़ॉक्स IE7 के साथ विंडोज और फ़ायर्फ़ॉक्स
  • विंडोज के साथ की तरह एक सेटअप के साथ एक ग्रिड (आभासी मशीनों के रूप में) चार नोड्स के साथ चल रहा है IE9 और Firefox
  • साथ फ़ायर्फ़ॉक्स

नोट सेलेनियम सिफारिश की है कि आईई उसमें केवल एक ही विंडोज नोड्स पर चलाने की अनुमति दी है कि लिनक्स। उपर्युक्त नोड्स में से प्रत्येक पर, निर्दिष्ट आईई का एक उदाहरण और निर्दिष्ट एफएफ के पांच उदाहरण किसी दिए गए समय पर चलाने की अनुमति है। ग्रिड सेटअप और हब कॉन्फ़िगर किए गए, परीक्षणों को फायरिंग एक हवा है। वेबड्राइवर में, इच्छित वातावरण स्थापित करने के लिए DesiredCapabilities ऑब्जेक्ट का उपयोग करें और फिर परीक्षण बंद करें और परिणाम लौटने की प्रतीक्षा करें।

Platform desiredPlatform; 
DesiredCapabilities desiredCapabilities; 
desiredPlatform = Platform.LINUX; 
desiredCapabilities = DesiredCapabilities.firefox(); 
desiredCapabilities.setPlatform(desiredPlatform); 
desiredCapabilities.setVersion("11"); 

WebDriver driver = new RemoteWebDriver("http://hubURL", desiredCapabilities); 

लोड (जो मैं स्थापित किया है) आभासी मशीनों के एक नंबर

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

मुझे कुछ समस्याएं आईं, जैसे कि बच्चे के सभी धागे में जुनीट स्टैक निशान को पुनर्प्राप्त करना। मैंने इसे Std.err को पैरेंट थ्रेड पर एक बाइटस्ट्रीम पर रीडायरेक्ट करके हल किया। सभी त्रुटियों को उस स्ट्रीम में भेज दिया जाता है जिसे मैं एक स्ट्रिंग में परिवर्तित करता हूं और प्रत्येक परीक्षण के अंत में Std.out पर प्रिंट करता हूं। परीक्षण के अंत में उत्पन्न एचटीएमएल पेजों में Std.out शामिल है जो पूरी तरह से काम करता है।

परिणाम

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

WebDriver augmentedDriver = new Augmenter().augment(driver); 
TakesScreenshot ss = (TakesScreenshot) augmentedDriver; 
String base64Screenshot = ss.getScreenshotAs(OutputType.BASE64); 
byte[] decodedScreenshot = Base64.decodeBase64(base64Screenshot.getBytes()); 
FileOutputStream fos = new FileOutputStream(new File(imageName)); 
fos.write(decodedScreenshot); 
fos.close(); 

जो दूरस्थ मशीन के चल रहे ब्राउज़र से स्थानीय मशीन पर कैप्चर किए गए स्क्रीनशॉट को सहेजता है।

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

+0

मैंने आपके काम को कुछ अन्य प्रश्नों पर देखा है और आप स्वचालित परीक्षण में बहुत कुशल लगते हैं। क्या आप मौके से, एक ट्यूटोरियल या प्रकाशित कोड जनता के लिए खुला है? – lbrown

1

दूसरे बिंदु के लिए: ग्रिड का उपयोग करने के बजाय आप अपने निरंतर एकीकरण सर्वर को नौकरी कर सकते हैं। मेरी कंपनी में हम जेनकींस और तथाकथित कॉन्फ़िगरेशन मैट्रिक्स का उपयोग करते हैं - यह आपको एकाधिक जेनकींस नोड्स पर एक ही नौकरी चलाने देता है।

पहले के लिए, मुझे लगता है कि जेनकिन्स भी यहां सहायक हो सकते हैं। आप एक ही नोड पर कई नौकरियां चला सकते हैं। हालांकि मैंने कभी कोशिश नहीं की है इसलिए मुझे पूरी तरह से यकीन नहीं है। और यह सिर्फ एक विचार है, मैं वास्तव में इस तरह के समाधान की सिफारिश नहीं करता। आप सेलेनियम ग्रिड का उपयोग करके समानांतर में परीक्षण चलाने के तरीके का वर्णन करते हुए this blog post पढ़ना भी चाह सकते हैं। जावा का उपयोग करने वाले लोगों के लिए मैं parallel tests with TestNG पढ़ने की अनुशंसा करता हूं।

आपका तीसरा बिंदु थोड़ा अस्पष्ट है। स्नैपशॉट से आपका क्या मतलब है? और आप किस प्रकार का परिणाम तुलना करना चाहते हैं?

-1

आप the free Telerik Testing Framework पर भी विचार कर सकते हैं। यह टेलीरिक के वाणिज्यिक टेस्ट स्टूडियो उत्पाद के लिए आधारभूत है। परीक्षण फ्रेमवर्क क्रॉस-ब्राउज़र समर्थन प्रदान करता है, गतिशील सामग्री स्थितियों (AJAX) के साथ एक अच्छा काम करता है, और आपको फ़ाइल अपलोड/डाउनलोड संवाद जैसे ओएस-स्तरीय संवादों को संभालने की सुविधा देता है। आप किसी भी समय ब्राउज़र के स्नैपशॉट भी ले सकते हैं।

आप जो भी धावक पसंद करते हैं उसके अंदर ढांचे को लपेट सकते हैं। मैंने बिना किसी परेशानी के न्यूटिट और एमबीयूनीट का उपयोग किया है।

यदि आपको अपने स्वचालन में सहायता चाहिए तो समर्थन पैकेज के लिए एक विकल्प भी है।

(प्रकटीकरण: मैं उनके टेस्ट स्टूडियो इंजीलवादी के रूप में Telerik के लिए काम करते हैं)

0

सेलेनियम आर सी पुरानी हो चुकी है और webdriver सेलेनियम परीक्षण बनाने की अधिक विश्वसनीय तरीका है। मैं ऊपर की प्रतिक्रियाओं को जावा पक्ष पर अधिक पूरा करता हूं। नीचे उल्लेख कैसे सी # और सेलेनियम का उपयोग कर webdriver

कैसे करने के लिए सेटअप आईडीई (एक्सप्रेस वी.एस.), NUnit और सेलेनियम उल्लेख How to setup C#,nUnit and selenium client drivers on VSExpress for Automated tests

सरल स्क्रिप्ट बनाना पर है कि एक शुरूआत सवाल यहाँ पूछा प्राप्त करने के लिए पर अधिक जानकारी है ब्राउज़र कुछ कदम का उल्लेख Creating Basic Selenium web driver test case using Nunit and C#

कैसे विभिन्न ब्राउज़रों के एक नंबर पर वही वेबपृष्ठ लोड करने के लिए पर How to invoke locally different types of browser driver using selenium and c#

चर्चा करते हुए सुझाव है इसके लिए एक ही वेबपृष्ठ को कई वर्चुअल मशीनों (जिसे मैंने सेट अप किया है) पर लोड करें, आपको सामान्य वेबड्राइवर के बजाय रिमोट वेबड्राइवर का उपयोग करने की आवश्यकता है। रिमोट वेबड्राइवर के साथ, आप विभिन्न प्रकार के ब्राउज़र लॉन्च कर सकते हैं। इस वेबपृष्ठ How to invoke/run different type of web driver browser using remote webdriver in C#

भिन्न ब्राउज़र स्नैपशॉट लेने के लिए आप इस लिंक Capturing screen shots using remote/local webdriver in C#/Selenium webdriver