2013-04-29 9 views
5

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

मुख्य मुद्दा यह है कि मेरा लॉगिन फॉर्म एंगुलरजेएस निर्देश के रूप में उत्पन्न होता है (मेरे पास दो अलग-अलग लॉगिन पेज हैं और यह निर्देश दोनों स्थानों पर पुन: उपयोग किया जाता है) और सेलेनियम इस निर्देश-उत्पन्न मार्कअप के तत्वों को देखने में असमर्थ प्रतीत होता है। सबसे महत्वपूर्ण बात यह है कि मैंने निर्देश के आधार पर नियमित मार्कअप को प्रतिस्थापित करने से पहले इस पृष्ठ पर परीक्षण पारित किया था।

तो ऐसा लगता है कि सेलेनियम निर्देश द्वारा जेनरेट किए गए HTML तत्वों को देखने में सक्षम नहीं है।

कोई सुझाव है कि मैं इस मुद्दे को कैसे दूर कर सकता हूं? इस परिवर्तन को वापस लाने के निर्देश को छोड़कर :)

+0

मैं ठीक उसी मुद्दा हो रहा है। मेरे पास एक कोणीय वेबसाइट है जिसे मैं परीक्षण करने की कोशिश कर रहा हूं लेकिन जब मैं जूनिट परीक्षण चलाता हूं, तो तत्व नहीं मिलता है। मैंने विभिन्न तत्व लोकेटरों की कोशिश की। कोई काम नहीं किया। – Automationtested

उत्तर

1

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

1

पेज स्रोत एंगुलर द्वारा संकलित किए जाने से पहले टेम्पलेट दिखाएगा। आपको क्रोम के डेवलपर कंसोल का उपयोग करके संकलित टेम्पलेट देखने में सक्षम होना चाहिए: इसे तत्व पर राइट क्लिक करने का प्रयास करें और इसे खोलने के लिए 'तत्व का निरीक्षण करें' का चयन करें।

driver.getPageSource() उसी कारण से विफल हो जाएगा (यह असम्बद्ध टेम्पलेट हो जाता है), लेकिन driver.findElement() को ठीक काम करना चाहिए।

<input id="username" type="text" ng-model="foo"/> 

,

driver.findElement(By.id("username")); 
+0

दुर्भाग्य से यह मामला नहीं है। मैंने अधिक स्पष्ट होने के लिए प्रश्न संपादित किया है। समस्या यह है कि इस निर्देश पर जेनरेट किए गए मार्कअप को जोड़ने से पहले मेरे परीक्षण इस पृष्ठ पर गुज़र रहे थे। –

1

मुझे नहीं लगता कि यह कोणीय से संबंधित है लेकिन सेलेनियम से संबंधित है, सेलेनियम के पास केवल जावास्क्रिप्ट में हेरफेर होने से पहले प्रारंभिक डोम होगा।

हमने सामान्य jQuery प्लगइन के साथ एक ही समस्या देखी है जो डीओएम तत्व प्रदान करता है।

देखने के लिए कि सलाह यहाँ मदद करता है:

Why can't Selenium find dynamically added DOM elements? Capybara doesn't recognize dynamically added DOM elements?

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