handling web tables frames
पिछले सेलेनियम वेबड्राइवर ट्यूटोरियल में, हमने सामान्य रूप से विभिन्न और सीखा नियमित रूप से सेलेनियम वेबड्राइवर कमांड का उपयोग किया जाता है सेलेनियम लिपियों में iframe और अपवादों को संभालने जैसे महत्वपूर्ण विषय शामिल हैं।
हमारे व्यापक में आगे बढ़ रहा है सेलेनियम पर ट्यूटोरियल की श्रृंखला , इस ट्यूटोरियल में हम चर्चा करेंगे वेब तालिकाओं, iframe और गतिशील तत्वों को संभालना जो किसी भी वेब परियोजना का एक अनिवार्य हिस्सा हैं।
इस ट्यूटोरियल में सेलेनियम स्क्रिप्ट में 3 अलग-अलग विषय और उनके हैंडलिंग तंत्र शामिल हैं।
- वेब टेबल्स / एचटीएमएल टेबल
- फ्रेम्स
- गतिशील तत्व
आप क्या सीखेंगे:
# 1) वेब टेबल्स / HTML टेबल्स
इस मॉड्यूल में, हम एक वेब पेज में वेब टेबल या HTML टेबल के बारे में जानेंगे, HTML में उपलब्ध टैग और वेब टेबल को कैसे गतिशील रूप से हैंडल करना है।
वेब टेबल मूल रूप से तत्वों का एक समूह है जो तार्किक रूप से एक पंक्ति और स्तंभ प्रारूप में संग्रहीत होते हैं। इसका उपयोग वेब पेज पर इसी तरह की जानकारी को व्यवस्थित करने के लिए किया जाता है।
नीचे Html तालिका का एक उदाहरण दिया गया है:
नीचे एक HTML तालिका की HTML संरचना का स्निपेट है:
नीचे टैग आमतौर पर HTML तालिकाओं में परिभाषित किए गए हैं:
1. उपयुक्त 'टैग HTML तालिका को परिभाषित करता है।
2. 'टीटीओ' टैग पंक्तियों और स्तंभों के लिए एक कंटेनर को परिभाषित करता है।
3. HTML तालिका में पंक्तियों को परिभाषित नहीं करता है।
4. '/' th 'एक HTML तालिका के कॉलम को परिभाषित करते हैं।
वेब तालिका का विवरण प्राप्त करें:
ऐसे कई तरीके हैं जिनसे हम एक वेब टेबल को संभाल सकते हैं।
क्या एक eps फ़ाइल खोल सकते हैं
दृष्टिकोण # १ :
नीचे html तालिका में सेल में से एक का xpath है। 'प्रथम नाम' बताएं
// div (@ id = 'main') / टेबल (1) / tbody / tr (1) / th (१)
tr (1) पहली पंक्ति को परिभाषित करता है और th (१) पहला स्तंभ परिभाषित करता है।
यदि कई पंक्तियाँ और स्तंभ हमेशा स्थिर होते हैं, तो बता दें कि हमारी HTML तालिका में हमेशा 5 पंक्तियाँ और 3 स्तंभ होंगे।
for(int numberOfRows=1; numberOfRows<=5; numberOfRows++) { for(int numberOfCol=1; numberOfCol <=3; numberOfCol++) { System.out.println(driver.findElement(By.xpath (“//div(@id='main')/table(1)/tbody/tr (“+numberOfRows+”)/th(“+numberOfCol+”)”))); } }
पंक्ति और स्तंभ संख्या को छोड़कर, XPath का प्रत्येक घटक समान रहता है। तो आप ऊपर वर्णित प्रत्येक पंक्ति और स्तंभ के लिए 'लूप के लिए' का उपयोग कर सकते हैं।
दृष्टिकोण # 2 :
पहला दृष्टिकोण तालिका के लिए सबसे उपयुक्त है जो अपने आयामों को नहीं बदलता है और हमेशा एक ही रहता है। उपरोक्त दृष्टिकोण गतिशील रूप से वेब तालिकाओं को बदलने के लिए एक सही समाधान नहीं होगा।
एक उदाहरण के रूप में HTML तालिका के ऊपर लें:
WebElement htmltable=driver.findElement(By.xpath('//*(@id='main')/table(1)/tbody')); List rows=htmltable.findElements(By.tagName('tr')); for(int rnum=0;rnum चरण 1 : पहले संपूर्ण HTML तालिका प्राप्त करें और इसे 'webtable' प्रकार के वेब तत्व के रूप में संग्रहित करें।
चरण 2 : टैग नाम 'tr' के साथ सभी पंक्तियों को प्राप्त करें और सभी तत्वों को वेब तत्वों की सूची में संग्रहीत करें। अब टैग ’tr’ वाले सभी तत्व elements पंक्तियों की सूची में संग्रहीत हैं।
चरण 3 : प्रत्येक पंक्ति के माध्यम से लूप करें और टैग के साथ तत्वों की सूची प्राप्त करें ‘ध’। ‘Row.get (0) ' पहली पंक्ति देगा और ‘FindElements (By.tagName ( 'वें' )) ' पंक्ति के लिए कॉलम की सूची देगा।
चरण 4 : Iterate का उपयोग करना ‘कॉलमसाइज़ () और प्रत्येक सेल का विवरण प्राप्त करें।
ध्यान दें : यदि टेबल आयाम गतिशील रूप से बदलता है, तो उपरोक्त दृष्टिकोण सबसे उपयुक्त होगा।
यह विषय समाप्त करता है कि सेलेनियम में वेब तालिकाओं को कैसे संभालना है। अगला, हम एक फ्रेम के अंदर एक तत्व को संभालने के बारे में सीखेंगे।
# 2) फ्रेम
इस अनुभाग में, हम एक वेब पेज में फ़्रेम के बारे में और फ़्रेमों की पहचान करने के तरीके के बारे में जानेंगे। इसके अलावा, हम यह पता लगाएंगे कि हम सेलेनियम वेबड्राइवर में एक फ्रेम कैसे संभाल सकते हैं।
कई डेवलपर्स तत्वों को एक फ्रेम के अंदर रखना पसंद करते हैं। फ्रेम केवल एक कंटेनर की तरह है जहां कुछ तत्वों को समूहीकृत किया जा सकता है।
एक फ्रेम की पहचान:
यह जानने के विभिन्न तरीके कि तत्व एक फ्रेम के अंदर मौजूद है या नहीं
# 1 । तत्व पर राइट-क्लिक करें। जांचें कि क्या 'यह फ़्रेम' विकल्प उपलब्ध है। यदि यह फ़्रेम विकल्प उपलब्ध है, तो इसका मतलब है कि तत्व एक फ़्रेम के अंदर है।
#दो । वेब पेज का पेज सोर्स देखें और जांचें कि क्या कोई टैग ame iframe ’के लिए उपलब्ध है।
कैसे मुक्त करने के लिए ऑनलाइन मोबाइल फोनों के लिए देखने के लिए

किसी वेबपृष्ठ में फ़्रेमों की संख्या सत्यापित करें :
सभी फ़्रेम टैग नाम 'iframe' के रूप में हैं।
सूची फ्रेमलिस्ट = ड्राइवर. रिफाइनरी (By.tagName () 'इफ्रेम' ));
System.out.println (frameList.size ());
ऊपर के उदाहरण में : फ्रेमिस्ट फ्रेम की सभी सूची होगी और फ्रेमलिस्ट। आकार () फ्रेम की संख्या दे देंगे।
फ्रेम के अंदर एक तत्व को संभालना:
यदि कोई तत्व किसी फ़्रेम के अंदर है, तो नियंत्रण को पहले फ़्रेम पर स्विच करना होगा और फिर तत्वों पर काम करना शुरू करना होगा।
चरण 1 : एक फ्रेम के अंदर स्विच करने के लिए:
Driver.switchTo ()। फ्रेम (1); // फ्रेम नंबर को पैरामीटर के रूप में पास करें।
या
Driver.switchTo ()। फ़्रेम ('फ़्रेम नाम'); // फ्रेम नाम पैरामीटर के रूप में।
या
Driver.switchTo ()। फ्रेम ('फ्रेम का xpath');
चरण 2 : एक फ्रेम सेलेनियम के अंदर स्विच करने के बाद तत्वों पर काम करने में सक्षम हो जाएगा।
Driver.findElement ( // ********************************);
Driver.findElement ( // ********************************);
यहां, हमने सीखा है कि फ़्रेम के अंदर एक तत्व को कैसे संभालना है और अगले हम गतिशील तत्व को संभालने के विभिन्न तरीकों के बारे में कवर करेंगे।
# 3) गतिशील तत्व
इस खंड में हम गतिशील तत्व को संभालने और जेनेरिक Xpath के निर्माण के विभिन्न तरीकों को सीखेंगे।
कुछ परिदृश्यों में, तत्व गुण गतिशील रूप से बदलते हैं। यह can आईडी ’,’ नाम ’आदि हो सकता है।
उदाहरण : मान लें कि उपयोगकर्ता नाम फ़ील्ड का 'आईडी' 'यूज़र_123' है और XPath होगा
// * (@ id = 'username_123 () लेकिन जब आप पृष्ठ को फिर से खोलेंगे तो 'यूजरनेम' फ़ील्ड का 'आईडी' बदल सकता है और नया मूल्य 'यूजरनेम_234' हो सकता है।
इस मामले में, परीक्षण विफल हो जाएगा क्योंकि सेलेनियम एक्सपीथ को आप पहले पारित नहीं कर पाए क्योंकि फ़ील्ड की आईडी कुछ अन्य मूल्य में बदल गई है।
समस्या के प्रकार के आधार पर कई दृष्टिकोण हैं:
समस्या टाइप 1: यदि विशेषता मान का हिस्सा बदल जाता है ।
उदाहरण : उपरोक्त उदाहरण के अनुसार, आईडी मूल्य में परिवर्तन होता है लेकिन कुछ क्षेत्र स्थिर रहते हैं।
‘Username_123’ बदलकर _ username_234 ’हो गया लेकिन always उपयोगकर्ता नाम’ हमेशा स्थिर रहा।
आप नीचे के रूप में xpath का निर्माण कर सकते हैं:
Driver.findElement (By.xpath ( '// * ((@ आईडी, 'उपयोगकर्ता नाम'))' ))। SendKeys ( 'उपयोगकर्ता नाम' );
चालक । findElement (By.xpath ( '// * (शुरू-साथ (@ आईडी, 'उपयोगकर्ता'))' ))। SendKeys ( 'उपयोगकर्ता नाम' );
’समाहित है’ एक जावा विधि है जो जाँचती है कि क्या आईडी में उपयोक्तानाम है।
के साथ शुरू करो() जाँचता है कि क्या कोई विशेषता 'उपयोगकर्ता' से शुरू होती है।
समस्या टाइप 2: यदि विशेषता का संपूर्ण मान गतिशील रूप से बदलता है।
मैक के लिए मुफ्त डीवीडी तेजस्वी सॉफ्टवेयर
इस मामले में, अलग-अलग दृष्टिकोण हो सकते हैं:
उदाहरण के लिए : यदि: लॉगिन 'फ़ील्ड की आईडी गतिशील रूप से बदल जाती है और इसमें विधि का उपयोग करने के लिए कोई निरंतर मूल्य नहीं है।
उपाय : SendKeys का उपयोग।
सेलेनियम फ़ंक्शन कुंजियों का उपयोग करने के लिए अलग-अलग एपीआई प्रदान करता है। उदाहरण के लिए टैब की, कुंजी दर्ज करें, F5 आदि।
चरण 1 : पास वर्ड दर्ज करें
Driver.findElement (By.id ( 'पारण शब्द' ))। sendKeys ('पासवर्ड'));
चरण 2 : तत्व को नेविगेट करने के लिए प्रमुख कार्यों का उपयोग करें।
Driver.findElement (By.id ( 'पारण शब्द' ))। SendKeys (कीज़) दर्ज करें ));
या
Driver.findElement (By.id ( 'पारण शब्द' ))। SendKeys (कीज़) टैब ));
निष्कर्ष
वेब टेबल, फ्रेम और डायनामिक तत्व किसी भी वेब प्रोजेक्ट का अनिवार्य हिस्सा हैं। वेब तालिकाओं और गतिशील तत्वों को संभालने के लिए प्रभावी कोड लिखना हमेशा वांछनीय होता है।
जेनेरिक XPath के निर्माण को समझना जो गतिशील तत्वों को संभालने के दौरान बहुत सहायक है। एक फ्रेम के मामले में, आपकी स्क्रिप्ट को फ़्रेम को स्विच करना होगा और फिर तत्व पर काम करना होगा।
अगला ट्यूटोरियल # 19 : अगले सेलेनियम ट्यूटोरियल में हम सीखेंगे अपवाद के बारे में और कैसे सेलेनियम लिपियों में जावा में अपवादों को संभालना है।
यदि आपके पास कोई वेब तालिका, फ़्रेम और गतिशील तत्व से संबंधित अपने प्रश्नों को पोस्ट करें।
अनुशंसित पाठ
- सेलेनियम लिपियों के निर्माण के लिए क्रोम और IE ब्राउज़रों में तत्वों का पता कैसे लगाएं - सेलेनियम ट्यूटोरियल # 7
- एक वेब पेज पर ड्रॉपडाउन तत्वों को संभालने के लिए सेलेनियम चयन कक्षा का उपयोग - सेलेनियम ट्यूटोरियल # 13
- सेलेनियम लोकेटर: सेलेनियम (उदाहरण) में XPath का उपयोग कर वेब तत्वों को पहचानें
- सेलेनियम लिपियों के लिए वेब तत्वों की पहचान के लिए सीएसएस चयनकर्ता का उपयोग कैसे करें - सेलेनियम ट्यूटोरियल # 6
- विभिन्न प्रकार के वेबड्राइवर कमांड - सेलेनियम ट्यूटोरियल # 14 का उपयोग करके वेब तत्वों की दृश्यता की जांच करें
- ककड़ी सेलेनियम ट्यूटोरियल: ककड़ी जावा सेलेनियम वेबड्राइवर एकीकरण
- जेमीटर के साथ सेलेनियम का एकीकरण
- सेलेनियम वेबड्राइवर स्विचटॉ () विधि का उपयोग करके iFrames को संभालना