मैंने सेलेनियम वेबड्राइवर के साथ जूनिट का उपयोग करके एक टेस्ट फ्रेमवर्क बनाया है जो आपके प्रत्येक अंक को संतुष्ट करता है। हालांकि यह बिल्कुल ठीक नहीं है कि आप क्या पूछ रहे हैं, मुझे लगता है कि यह आपके लिए फायदेमंद हो सकता है।
लोड विभिन्न ब्राउज़रों
सेलेनियम के ग्रिड का उपयोग के एक नंबर पर वही वेबपृष्ठ, इस स्थापित करने के लिए बहुत सरल है। उन वातावरणों के साथ कुछ वर्चुअल मशीन सेट अप करें जिन्हें आप जांचना चाहते हैं।हमारे वातावरण में, उदाहरण के लिए, हम निम्नलिखित
- 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();
जो दूरस्थ मशीन के चल रहे ब्राउज़र से स्थानीय मशीन पर कैप्चर किए गए स्क्रीनशॉट को सहेजता है।
असल में, ब्राउज़र स्वचालन अभी भी स्थिर करने के लिए संघर्ष कर रहा है। ऐसी कई महत्वपूर्ण विशेषताएं हैं, जैसे कि आप जिनके बारे में पूछ रहे हैं, वे केवल ठोस रूप से लागू नहीं किए गए हैं जिन्हें मैं किसी भी रूपरेखा में जानता हूं। समय के साथ, मुझे यकीन है कि इसमें से बहुत से निपटेंगे और क्यूए डेवलपर्स हर जगह खुश होंगे।
उल्लेख कर सकते हैं जब आप कहते हैं कि '1 का संदर्भ लें। एक ही वेबपृष्ठ को कई अलग-अलग ब्राउज़रों पर लोड करें 'क्या आपका मतलब एक बार में है? या अनुक्रमिक रूप से? –
एक बार में। तो एक ही वेबपृष्ठ लोड करने के लिए कई ब्राउज़र खोलें। – lbrown
क्या आपके लिए एमबीनिट पर स्विच करना संभव है? कुछ जांच के बाद मैं निष्कर्ष निकाला कि नूनिट समांतरता के लिए सबसे अच्छा साधन नहीं है। –