क्या आप जानते हैं कि आप रूबी के साथ अपने वेब ब्राउज़र को नियंत्रित कर सकते हैं?
Watir जेम आपको ऐसा करने की अनुमति देता है।
और यह आधुनिक ब्राउज़र्स की पूरी शक्ति के साथ आता है:
- आप पेज के दृश्य क्षेत्र का स्क्रीनशॉट ले सकते हैं
- आप किसी भी पेज पर जावास्क्रिप्ट चला सकते हैं, बिना मैन्युअली डेवलपर टूल्स खोले और कोड टाइप किए
- आप लिंक्स ढूंढ सकते हैं, उन पर क्लिक कर सकते हैं, और यहां तक कि इनपुट फ़ील्ड्स में टेक्स्ट भर सकते हैं
यह सब Watir और Selenium प्रोजेक्ट के लिए धन्यवाद उपलब्ध है।
आइए कुछ कोड उदाहरण देखें!
ब्राउज़र लॉन्च करना
सबसे पहले, इस तरह एक ब्राउज़र ऑब्जेक्ट बनाएं:
require 'watir' browser = Watir::Browser.new
यह एक खाली क्रोम विंडो खोलेगा (यह मानते हुए कि आपके पास यह इंस्टॉल है) जिसे आप अब नियंत्रित कर सकते हैं।
उदाहरण के लिए:
browser.goto("rubyguides.com") क्रोम इस URL पर नेविगेट करेगा, और पेज लोड होगा जैसे आपने खुद URL टाइप किया हो।
अब:
आप वेबसाइट पर वह सब कुछ कर सकते हैं जो आप सामान्य रूप से अपने माउस और कीबोर्ड से करते हैं।
जैसे लिंक ढूंढना और उस पर क्लिक करना।
उदाहरण:
browser.link(text: "All Posts").click
Watir के साथ एलिमेंट्स कैसे ढूंढें
आप उनके एट्रिब्यूट्स द्वारा एलिमेंट्स ढूंढ सकते हैं, जैसे:
- टेक्स्ट
- क्लास
- आईडी
इन एलिमेंट्स के मेथड्स होते हैं जो उनके HTML नाम से मेल खाते हैं, इसलिए यदि आप H1 टैग ढूंढ रहे हैं तो मेथड h1 है, पैराग्राफ के लिए मेथड p है और इमेजेस के लिए मेथड या तो img या images है।
उदाहरण:
browser.h1(text: "Ruby Post Index")
आप मेथड नाम के बहुवचन का उपयोग करके एलिमेंट्स की सूची भी प्राप्त कर सकते हैं।
उदाहरण:
browser.links browser.images browser.h2s
यह आपको एक Watir::AnchorCollection ऑब्जेक्ट देगा, जो each, map और inject जैसे मेथड्स का जवाब देता है।
उदाहरण:
browser.links.map(&:href)
टाइमआउट्स और अनुपस्थित एलिमेंट्स से कैसे निपटें
ऐसा हो सकता है कि कोई एलिमेंट मौजूद न हो, शायद इसलिए कि एलिमेंट अभी तक पेज में लोड नहीं हुआ है, या पेज बदल गया है।
जब Watir एलिमेंट नहीं ढूंढ पाता तो क्या होता है?
एक टाइमआउट होता है।
यह डिफ़ॉल्ट रूप से 30 सेकंड का होता है, लेकिन आप इसे बदल सकते हैं:
Watir.default_timeout = 10
जब यह समाप्त होता है तो आपको Watir::Exception::UnknownObjectException एक्सेप्शन मिलता है।
लेकिन इससे निपटने का एक और तरीका है!
आप क्लिक करने या कोई अन्य एक्शन करने से पहले जांच सकते हैं कि एलिमेंट मौजूद है या नहीं।
यहां कैसे:
link = browser.link(text: 'Guides') if link.present? link.click end
स्क्रीनशॉट कैसे लें
एक बार आपके पास एक खुला ब्राउज़र और लोडेड पेज हो तो आप उसका स्क्रीनशॉट ले सकते हैं।
इस तरह:
browser.screenshot.save("/tmp/screen.png") यह वर्तमान व्यूपोर्ट की एक इमेज सेव करता है।
स्क्रिप्ट्स चलाना
आप ब्राउज़र में जावास्क्रिप्ट चला सकते हैं ताकि पेज की वर्तमान स्थिति को प्रभावित किया जा सके, या आप उस पेज पर परिभाषित जावास्क्रिप्ट फंक्शन्स को कॉल कर सकते हैं।
यहां कैसे:
browser.execute_script "alert('bacon')" # nil परिणाम?
"bacon" शब्द के साथ एक अलर्ट विंडो 🙂
कोड चलाएं और परिणाम वापस प्राप्त करें:
browser.execute_script "return 1 + 1" # 2
इनपुट फ़ील्ड्स कैसे भरें
इनपुट फ़ील्ड भरने में दो चरण शामिल हैं:
- एलिमेंट ढूंढें
- कीज़ भेजें
यहां एक उदाहरण है:
browser.input(id: "search").send_keys("orange juice") अब आपको सबमिट बटन ढूंढना होगा और उस पर क्लिक करना होगा।
उपयोगी Watir मेथड्स और टिप्स
Watir आपको कुछ उपयोगी मेथड्स तक पहुंच देता है।
उदाहरण के लिए, वर्तमान URL प्राप्त करें:
browser.url
खुले टैब्स की सूची प्राप्त करें:
browser.windows
वर्तमान विंडो को मैक्सिमाइज़ करें:
browser.window.maximize
वर्तमान पेज के लिए HTML और टेक्स्ट प्राप्त करें:
browser.text browser.html
यहां एक टिप भी है यदि आप आंशिक मिलान वाले एलिमेंट्स ढूंढना चाहते हैं, तो आप एक रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं।
इस तरह:
browser.p(text: /ruby/)
सारांश
आपने इस ट्यूटोरियल में Watir के बारे में सीखा, एक रूबी जेम जो आपको वेब ब्राउज़र को रिमोट कंट्रोल करने की अनुमति देता है ताकि आप कार्यों को स्वचालित कर सकें और पेजों से जानकारी निकाल सकें।
कृपया इस लेख को साझा करें यदि आपने इसे उपयोगी पाया ताकि अधिक लोग इसे ढूंढ सकें!
पढ़ने के लिए धन्यवाद।