কম্পিউটার

ওয়াতির দিয়ে রুবি থেকে কীভাবে একটি ওয়েব ব্রাউজার নিয়ন্ত্রণ করবেন

আপনি কি জানেন যে আপনি রুবি দিয়ে আপনার ওয়েব ব্রাউজার নিয়ন্ত্রণ করতে পারেন?

ওয়াতির মণি আপনাকে এটি করতে দেয়।

এবং এটি আধুনিক ব্রাউজারগুলির সম্পূর্ণ শক্তির সাথে আসে :

  • আপনি পৃষ্ঠার দৃশ্যমান এলাকার একটি স্ক্রিনশট নিতে পারেন
  • আপনি যেকোন পৃষ্ঠায় জাভাস্ক্রিপ্ট চালাতে পারেন, ম্যানুয়ালি ডেভেলপার টুল খুলতে এবং কোড টাইপ না করেই
  • আপনি লিঙ্কগুলি খুঁজে পেতে পারেন, সেগুলিতে ক্লিক করতে পারেন, এমনকি ইনপুট ক্ষেত্রে পাঠ্য পূরণ করতে পারেন

Watir এবং সেলেনিয়াম প্রকল্পের জন্য এই সমস্ত আপনার জন্য উপলব্ধ।

আসুন কিছু কোডের উদাহরণ দেখি!

একটি ব্রাউজার চালু করা হচ্ছে

প্রথমে, এই মত একটি ব্রাউজার অবজেক্ট তৈরি করুন:

require 'watir'

browser = Watir::Browser.new

এটি একটি খালি ক্রোম উইন্ডো খুলবে (অনুমান করে আপনি এটি ইনস্টল করেছেন) যা আপনি এখন নিয়ন্ত্রণ করতে পারেন৷

উদাহরণস্বরূপ :

browser.goto("rubyguides.com")

Chrome এই 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 দেবে অবজেক্ট, যা প্রতিটি, ম্যাপ এবং ইনজেকশনের মত পদ্ধতিতে সাড়া দেয়।

উদাহরণ :

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")

এটি বর্তমান ভিউপোর্টের একটি চিত্র সংরক্ষণ করে৷

চলমান স্ক্রিপ্টগুলি

আপনি পৃষ্ঠার বর্তমান অবস্থাকে প্রভাবিত করতে ব্রাউজারে Javascript চালাতে পারেন, অথবা আপনি সেই পৃষ্ঠায় সংজ্ঞায়িত জাভাস্ক্রিপ্ট ফাংশনগুলিকে কল করতে পারেন৷

এখানে কিভাবে :

browser.execute_script "alert('bacon')"
# nil

ফলাফল?

"বেকন" শব্দ সহ একটি সতর্কতা উইন্ডো 🙂

কোড চালান এবং ফলাফল ফিরে পান :

browser.execute_script "return 1 + 1"
# 2

ইনপুট ক্ষেত্রগুলি কীভাবে পূরণ করবেন

একটি ইনপুট ক্ষেত্র পূরণ করতে দুটি ধাপ জড়িত:

  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/)

সারাংশ

আপনি এই টিউটোরিয়ালে Watir সম্পর্কে শিখেছেন, একটি রুবি রত্ন যা আপনাকে একটি ওয়েব ব্রাউজারকে রিমোট কন্ট্রোল করতে দেয় যাতে আপনি কাজগুলি স্বয়ংক্রিয়ভাবে করতে এবং পৃষ্ঠাগুলি থেকে তথ্য বের করতে পারেন৷

আপনি যদি এটি সহায়ক বলে মনে করেন তাহলে অনুগ্রহ করে এই নিবন্ধটি শেয়ার করুন যাতে আরো মানুষ এটি খুঁজে পেতে পারে!

পড়ার জন্য ধন্যবাদ।


  1. রুবি দিয়ে কীভাবে পার্সার তৈরি করবেন

  2. কীভাবে ওয়েব থেকে এক্সেলে ডেটা আমদানি করবেন (দ্রুত পদক্ষেপ সহ)

  3. কিভাবে একটি রাস্পবেরি পাই দিয়ে একটি 3D প্রিন্টার নিয়ন্ত্রণ করবেন

  4. কিভাবে আপনার ওয়েব ব্রাউজার থেকে অটোপ্লেয়িং GIFs নিষ্ক্রিয় করবেন