2010-10-29 13 views
13

पर प्रदर्शित होती है या नहीं, मैं वेब एल्बम एप्लिकेशन के लिए सेलेनियम परीक्षणों का एक सूट बना रहा हूं। मैं यह जांचना चाहता हूं कि एक छवि वास्तव में प्रदर्शित होती है (इसमें वैध छवि डेटा होता है)। क्या ऐसी चीज संभव है?सेलेनियम - जांचें कि कोई छवि पृष्ठ

उत्तर

18

मुझे इस तरह की स्थिति का सामना करना पड़ा जहां से छवि का स्रोत अपेक्षित है लेकिन छवि पृष्ठ पर प्रदर्शित नहीं होती है।

आप यह जांच सकते हैं कि छवियां प्रदर्शित हो रही हैं या नहीं जावास्क्रिप्ट एक्स्सेक्टर का उपयोग कर। WebElement (छवि) में बताएं - -

Object result = ((JavascriptExecutor) driver).executeScript(
    "return arguments[0].complete && "+ 
    "typeof arguments[0].naturalWidth != \"undefined\" && "+ 
    "arguments[0].naturalWidth > 0", image); 

    boolean loaded = false; 
    if (result instanceof Boolean) { 
     loaded = (Boolean) result; 
     System.out.println(loaded); 
    } 

यदि छवि वास्तव में ऐसा करने से वेब पेज पर लोड होने के आप सत्यापित कर सकते

निम्न कोड का प्रयोग करें।

+1

धन्यवाद, मुझे उम्मीद नहीं थी कि इस महीने के बाद कोई भी कामकाजी समाधान पोस्ट करेगा। मैं इस कोड का उपयोग करके यह जांचने के लिए समाप्त हुआ कि सभी छवियां पृष्ठ पर मौजूद हैं: 'var elems = document.getElementsByTagName ("img"); var allOk = सत्य; के लिए (var i = 0; i 0; कंसोल। लॉग (elems [i]। प्राकृतिकविड्थ);} allOk; '। –

+0

आपका स्वागत है। खुशी है कि यह आपकी समस्या हल हो गई। –

+0

महान काम! एक नोट: हमारे देवताओं में प्लेसहोल्डर छवि है जो 400 पीएक्स है, और जब आप इसे स्क्रॉल करते हैं तो वे आलसी लोड छवि के साथ इसे स्वैप करते हैं। तो आखिरी टेस्ट, मेरे लिए, तर्क है [0]। प्राकृतिकविड्थ! = 400'। मदद के लिए अपने देवताओं के साथ जांचें। – SiKing

0

आप निश्चित रूप से जांच सकते हैं कि छवि पृष्ठ स्रोत में दिखाई देती है उदा। एक XPath पैरामीटर का उपयोग करके।

आप यह मान सकते हैं कि यह पृष्ठ स्रोत में है, यह प्रदर्शित होगा लेकिन मुझे वास्तव में इसे सत्यापित करने के किसी भी तरीके से नहीं पता है।

+0

स्थिति है, जब गैलरी पृष्ठ उत्पन्न होता है ठीक है, लेकिन छवि स्वयं ही अमान्य है - उदाहरण के लिए छवि स्क्रिप्ट में अपवाद के कारण। –

1

यदि आप सेलेनियम में TestPlan फ्रंटेंड का उपयोग करने के इच्छुक हैं तो कुछ विकल्प हैं। एक बार जब आप छवि का यूआरएल प्राप्त कर लेते हैं तो आप इस यूआरएल को पकड़ सकते हैं और लौटे हेडर का निरीक्षण कर सकते हैं। यदि आप मैन्युअल रूप से इसका निरीक्षण करना चाहते हैं तो आप डेटा को फ़ाइल में भी सहेज सकते हैं। या आप उस डेटा को लेने के लिए जावा में एक सत्यापनकर्ता लिख ​​सकते हैं और यह देखने के लिए जांच सकते हैं कि यह वास्तव में डीकोड करता है या नहीं।

यदि आप इसे आजमाने की इच्छा रखते हैं तो मैं आपको एक नमूना स्क्रिप्ट लिखूंगा। यदि आप चाहें तो मैं एक त्वरित छवि सत्यापनकर्ता फ़ंक्शन भी कर सकता हूं।

+0

यह सॉफ्टवेयर दिलचस्प लग रहा है, लेकिन मैं ब्रोमाइन फ्रॉन-एंड का उपयोग करने के लिए बाध्य हूं। हमारी कंपनी ने पहले ही कुछ मैन-घंटे इसे अनुकूलित कर लिया है और छवि-परीक्षण की वजह से उस काम को डंप करना व्यवहार्य नहीं है। हालांकि टिप के लिए धन्यवाद। –

2

यदि आप जावा का उपयोग कर रहे हैं, सेलेनियम में eval नामक एक विधि है। आप इसे जावास्क्रिप्ट स्ट्रिंग देते हैं और यह आपको स्ट्रिंग के रूप में परिणाम देता है। उदाहरण के लिए, आप इस (में एक पंक्ति) की कोशिश कर सकते:

var req = new XMLHttpRequest(); 
req.open('get', document.getElementById('imageid').src, false); 
req.send(null); 
req.status==200 

यह स्थिति 200 या कुछ और के लिए "गलत" के लिए वापस आ जाएगी "सही"।

+0

यदि छवि में कोई आईडी नहीं है तो क्या करें? छवि का नाम और वर्ग है - उस मामले में क्या करना है? –

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