আপনি কি জানতেন যে আপনি রুবি দিয়ে আপনার ওয়েব ব্রাউজার নিয়ন্ত্রণ করতে পারেন?
Watir gem আপনাকে এটি করতে দেয়।
এবং এটি আধুনিক ব্রাউজারগুলির পুরো শক্তির সাথে আসে:
- আপনি পেজের দৃশ্যমান এরিয়ার স্ক্রিনশট নিতে পারেন
- আপনি যেকোনো পেজে জাভাস্ক্রিপ্ট রান করতে পারেন, ডেভেলপার টুলস ম্যানুয়ালি খুলে কোড টাইপ করার প্রয়োজন ছাড়া
- আপনি লিংক খুঁজে পেতে পারেন, সেগুলো ক্লিক করতে পারেন, এবং ইনপুট ফিল্ডে টেক্সট ফিল আপ করতে পারেন
এই সব Watir এবং Selenium প্রজেক্টের فضلেই আপনার জন্য উপলব্ধ।
চলুন কিছু কোড উদাহরণ দেখি!
একটি ব্রাউজার লঞ্চ করা
প্রথমে, নিচের মত একটি ব্রাউজার অবজেক্ট তৈরি করুন:
require 'watir' browser = Watir::Browser.new
এটি একটি খালি ক্রোম উইন্ডো খুলবে (ধরে নিচ্ছি আপনার কাছে এটি ইনস্টলড আছে) যা আপনি এখন নিয়ন্ত্রণ করতে পারেন।
উদাহরণস্বরূপ:
browser.goto("rubyguides.com") ক্রোম এই URL-এ নেভিগেট করবে, এবং পেজ লোড হবে যেন আপনি নিজে URL টাইপ করেছেন।
এখন:
আপনি একটি ওয়েবসাইটে আপনার মাউস ও কীবোর্ড দিয়ে যা যা করুন, সেগুলো করতে পারেন।
যেমন একটি লিংক খুঁজে বের করা এবং ক্লিক করা।
উদাহরণ:
browser.link(text: "All Posts").click
Watir-এ এলিমেন্ট খুঁজে বের করা
আপনি তাদের অ্যাট্রিবিউট দিয়ে এলিমেন্ট খুঁজে পেতে পারেন, যেমন:
- text
- class
- id
এই এলিমেন্টগুলোর মেথড আছে যা তাদের 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 যখন একটি এলিমেন্ট খুঁজে পায় না তখন কী ঘটে?
একটি টাইমআউট হয়।
ডিফল্টে এটি ৩০ সেকেন্ড, কিন্তু আপনি এটি পরিবর্তন করতে পারেন:
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 সম্পর্কে শিখেছেন, একটি রুবি jam যা আপনাকে একটি ওয়েব ব্রাউজার রিমোট কন্ট্রোল করতে দেয় যাতে আপনি টাস্ক অটোমেট করতে পারেন এবং পেজ থেকে ইনফরমেশন এক্সট্রাক্ট করতে পারেন।
যদি আপনি এটি উপকারী পান তবে এই আর্টিকেল শেয়ার করুন যাতে আরও মানুষ এটি খুঁজে পায়!
পড়ার জন্য ধন্যবাদ।