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