সেলেনিয়াম ওয়েবড্রাইভারে আইফ্রেমগুলি কীভাবে পরিচালনা করবেন: সুইচটো ()

সেলেনিয়াম ওয়েবড্রাইভারে iFrame

সেলেনিয়াম ওয়েবড্রাইভারে iFrame একটি ওয়েব পেজ বা একটি ইনলাইন ফ্রেম যা অন্য ওয়েব পেজে বা অন্য HTML ডকুমেন্টের ভিতরে একটি HTML ডকুমেন্ট এম্বেড করা থাকে। আইফ্রেম প্রায়ই অন্যান্য উৎস থেকে কন্টেন্ট যোগ করার জন্য ব্যবহার করা হয় যেমন একটি বিজ্ঞাপন একটি ওয়েব পেজে। Iframe সংজ্ঞায়িত করা হয়েছে< iframe > ট্যাগ।

এই টিউটোরিয়ালে, আপনি শিখবেন -

  1. আইফ্রেম কিভাবে চিহ্নিত করবেন:
  2. ওয়েব ড্রাইভার কমান্ড ব্যবহার করে আইফ্রেমে উপাদানগুলি কীভাবে পরিবর্তন করবেন:
  3. নেস্টেড ফ্রেমের ধারণা (ফ্রেমের ভিতরে ফ্রেম):

আইফ্রেম কিভাবে চিহ্নিত করবেন:

আমরা কেবল পৃষ্ঠা দেখে বা ফায়ারবাগ পরিদর্শন করে ফ্রেমগুলি সনাক্ত করতে পারি না।

নিচের ছবিটি লক্ষ্য করুন, বিজ্ঞাপনটি প্রদর্শিত হচ্ছে একটি ইফ্রেম, আমরা কেবল ফায়ারবাগ ব্যবহার করে পরিদর্শন করে এটি সনাক্ত বা সনাক্ত করতে পারি না। তাহলে প্রশ্ন হল আপনি কিভাবে আইফ্রেম সনাক্ত করতে পারেন?

সেলেনিয়াম ওয়েবড্রাইভার ব্যবহার করে আইফ্রেম কিভাবে চিহ্নিত করা যায়



আমরা নীচের পদ্ধতিগুলি ব্যবহার করে সেলেনিয়ামের ফ্রেমগুলি সনাক্ত করতে পারি:

  • উপাদানটিতে ডান ক্লিক করুন, যদি আপনি 'এই ফ্রেম' এর মতো বিকল্পটি খুঁজে পান তবে এটি একটি আইফ্রেম। (দয়া করে উপরের চিত্রটি দেখুন)
  • পৃষ্ঠায় ডান ক্লিক করুন এবং 'পৃষ্ঠার উৎস দেখুন' ক্লিক করুন এবং 'iframe' দিয়ে অনুসন্ধান করুন, যদি আপনি 'iframe' এর সাথে কোন ট্যাগের নাম খুঁজে পেতে পারেন তবে এর অর্থ হল একটি iframe সমন্বিত পৃষ্ঠা বলা।

উপরের চিত্রটিতে, আপনি দেখতে পারেন যে ' এই ফ্রেম 'ডান ক্লিক করার বিকল্প উপলব্ধ, তাই আমরা এখন নিশ্চিত যে এটি একটি আইফ্রেম।

এমনকি নীচের স্নিপেট ব্যবহার করে আমরা আইফ্রেমের মোট সংখ্যা সনাক্ত করতে পারি। | _+_ |

ওয়েব ড্রাইভার কমান্ড ব্যবহার করে আইফ্রেমে উপাদানগুলি কীভাবে পরিবর্তন করবেন:

মূলত, আমরা উপাদানগুলি পরিবর্তন করতে পারি এবং সেলেনিয়ামে ফ্রেমগুলি 3 উপায়ে ব্যবহার করতে পারি।

  • সূচক দ্বারা
  • নাম বা আইডি দ্বারা
  • ওয়েব এলিমেন্ট দ্বারা

সূচক দ্বারা ফ্রেমে স্যুইচ করুন:

সেলেনিয়ামে ফ্রেম হ্যান্ডলিংয়ের জন্য ইনডেক্স অন্যতম বৈশিষ্ট্য যার মাধ্যমে আমরা এটিতে যেতে পারি।

আইফ্রেমের সূচক '0' দিয়ে শুরু হয়।

ধরুন যদি পৃষ্ঠায় 100 টি ফ্রেম থাকে, আমরা সূচী ব্যবহার করে সেলেনিয়ামে ফ্রেমে স্যুইচ করতে পারি।

  • driver.switchTo ()। ফ্রেম (0);
  • driver.switchTo ()। ফ্রেম (1);

নাম বা আইডি দ্বারা ফ্রেমে স্যুইচ করুন:

নাম এবং আইডি হল সেলেনিয়ামে ফ্রেম পরিচালনার জন্য বৈশিষ্ট্য যার মাধ্যমে আমরা আইফ্রেমে যেতে পারি।

  • driver.switchTo ()। ফ্রেম ('iframe1');
  • driver.switchTo ()। ফ্রেম ('উপাদান আইডি');

আইডির মাধ্যমে আইফ্রেমে স্যুইচ করার উদাহরণ:

নীচের ছবিতে প্রদর্শিত সেলেনিয়ামে ফ্রেম স্যুইচ করার জন্য একটি উদাহরণ নেওয়া যাক। আমাদের প্রয়োজন হল iframe এ ক্লিক করা।

আমরা নিচের URL এর মাধ্যমে এই iframe অ্যাক্সেস করতে পারি: https://demo.on2vhf.be/test/on2vhfhome/

আইফ্রেমে সরাসরি ক্লিক করা অসম্ভব XPath যেহেতু এটি একটি আইফ্রেম। প্রথমে আমাদের ফ্রেমে যেতে হবে এবং তারপর আমরা xpath ব্যবহার করে ক্লিক করতে পারি।

ধাপ 1)

 Int size = driver.findElements(By.tagName('iframe')).size(); 
  • আমরা ফায়ারফক্স ড্রাইভার শুরু করি।
  • আইফ্রেম নিয়ে গঠিত 'on2vhf' সাইটে যান।
  • জানালাটা বড় করে।

ধাপ ২)

 WebDriver driver = new FirefoxDriver(); driver.get('https://demo.on2vhf.be/test/on2vhfhome/'); driver.manage().window().maximize(); 
  • এই ধাপে আমাদের ফায়ারবাগের মাধ্যমে পরিদর্শন করে আইফ্রেমের আইডি খুঁজে বের করতে হবে।
  • তারপর আইডির মাধ্যমে আইফ্রেমে স্যুইচ করুন।

ধাপ 3)

driver.switchTo().frame('a077aa5e');
  • এখানে আমাদের ক্লিক করা উপাদানটির xpath খুঁজে বের করতে হবে।
  • উপরে দেখানো ওয়েব ড্রাইভার কমান্ড ব্যবহার করে উপাদানটিতে ক্লিক করুন।

এখানে সম্পূর্ণ কোড: | _+_ |

আউটপুট:

ব্রাউজার উপরের আইফ্রেম যুক্ত পৃষ্ঠায় নেভিগেট করে এবং আইফ্রেমে ক্লিক করে।

ওয়েব এলিমেন্ট দ্বারা ফ্রেমে স্যুইচ করুন:

এমনকি আমরা ওয়েব এলিমেন্ট ব্যবহার করে আইফ্রেমে যেতে পারি।

  • driver.switchTo ()। ফ্রেম (WebElement);

কিভাবে মূল ফ্রেমে ফিরে যাওয়া যায়

আমাদের ইফ্রেম থেকে বেরিয়ে আসতে হবে।

মূল ফ্রেমে ফিরে যেতে, আপনি হয় সুইচটো () ব্যবহার করতে পারেন। | _+_ |

ফ্রেমটি কীভাবে স্যুইচ করা যায়, যদি আমরা আইডি বা ওয়েব এলিমেন্ট ব্যবহার না করে স্যুইচ করতে না পারি:

ধরুন যদি পৃষ্ঠায় 100 টি ফ্রেম থাকে, এবং কোন আইডি পাওয়া যায় না, এই ক্ষেত্রে, আমরা জানি না যে কোনটি থেকে ইফ্রেমের প্রয়োজনীয় উপাদান লোড হচ্ছে (এটি সেই ক্ষেত্রে যখন আমরা ফ্রেমের সূচকটি জানি না এছাড়াও)।

উপরের উদ্বেগের সমাধান হল, আমাদের অবশ্যই আইফ্রেমের সূচকটি খুঁজে বের করতে হবে যার মাধ্যমে উপাদানটি লোড করা হচ্ছে এবং তারপরে আমাদের সূচকের মাধ্যমে আইফ্রেমে যেতে হবে।

নীচের স্নিপেট ব্যবহার করে উপাদানটি লোড করা হচ্ছে সেই ফ্রেমের সূচী খোঁজার জন্য নীচে পদক্ষেপগুলি দেওয়া হল

ধাপ 1)

driver.findElement(By.xpath('html/body/a/img')).click();
  • ফায়ারফক্স ড্রাইভার চালু করুন।
  • আইফ্রেম নিয়ে গঠিত 'on2vhf' সাইটে যান।
  • জানালাটা বড় করে।

ধাপ ২)

 public class SwitchToFrame_ID { public static void main(String[] args) { WebDriver driver = new FirefoxDriver(); //navigates to the Browser driver.get('https://demo.on2vhf.be/test/on2vhfhome/'); // navigates to the page consisting an iframe driver.manage().window().maximize(); driver.switchTo().frame('a077aa5e'); //switching the frame by ID System.out.println('********We are switch to the iframe*******'); driver.findElement(By.xpath('html/body/a/img')).click(); //Clicks the iframe System.out.println('*********We are done***************'); } } 
  • উপরের কোডটি 'iframe' ট্যাগনাম ব্যবহার করে পৃষ্ঠার ভিতরে উপস্থিত আইফ্রেমের মোট সংখ্যা খুঁজে পায়।

ধাপ 3)

জন্য উদ্দেশ্য এই পদক্ষেপটি iframe এর সূচক খুঁজে বের করা হবে। | _+_ |

উপরের 'ফোরলুপ' পৃষ্ঠার সমস্ত আইফ্রেমগুলিকে পুনরাবৃত্তি করে এবং যদি আমাদের প্রয়োজনীয় আইফ্রেম পাওয়া যায় তবে এটি '1' প্রিন্ট করে অন্যটি '0' প্রদান করে।

ধাপ 3 পর্যন্ত সম্পূর্ণ কোডটি এখানে:

 driver.switchTo().parentFrame(); driver.switchTo().defaultContent();

এই প্রোগ্রামটি চালান এবং আউটপুট নীচের মত হবে:

আউটপুট: | _+_ | আউটপুট যাচাই করুন, আপনি 0 এবং 1 এর সিরিজ খুঁজে পেতে পারেন।

  • যেখানেই আপনি '1' আউটপুটে পাবেন সেটি হল ফ্রেমের সূচক যার দ্বারা উপাদানটি লোড হচ্ছে।
  • যেহেতু iframe এর সূচী '0' দিয়ে শুরু হয় যদি আপনি 1 এর মধ্যে 1 খুঁজে পানসেন্টস্থান, তারপর সূচক 0।
  • যদি আপনি 3 এর মধ্যে 1 খুঁজে পানrdস্থান, সূচক 2।
আমরা লুপের জন্য মন্তব্য করতে পারি, একবার আমরা সূচকটি খুঁজে পেয়েছি। ধাপ 4)
 WebDriver driver = new FirefoxDriver(); driver.get('https://demo.on2vhf.be/test/on2vhfhome/'); driver.manage().window().maximize(); 
  • একবার আপনি উপাদানটির সূচক খুঁজে পেয়ে গেলে, আপনি উপরের কমান্ডটি ব্যবহার করে ফ্রেমের উপর স্যুইচ করতে পারেন।
  • driver.switchTo ()। ফ্রেম (ধাপ 3 থেকে পাওয়া সূচক);
ধাপ 5)
int size = driver.findElements(By.tagName('iframe')).size();
  • উপরের কোডটি iframe এ iframe বা এলিমেন্টে ক্লিক করবে।
সুতরাং সম্পূর্ণ কোডটি নীচের মত হবে: | _+_ | আউটপুট: ব্রাউজার উপরের আইফ্রেম যুক্ত পৃষ্ঠায় নেভিগেট করে এবং আইফ্রেমে ক্লিক করে।

নেস্টেড ফ্রেমের ধারণা (ফ্রেমের ভিতরে ফ্রেম):

আসুন ধরে নিই যে নীচের ছবিতে দেখানো মত দুটি ফ্রেম অন্যের ভিতরে রয়েছে এবং আমাদের প্রয়োজন বাইরের ফ্রেম এবং ভিতরের ফ্রেমে পাঠ্য ছাপানো। নেস্টেড ফ্রেমের ক্ষেত্রে,
  • প্রথমে আমাদের বাইরের ফ্রেমে যেতে হবে ইনফেক্স বা আইফ্রেমের আইডি দিয়ে
  • একবার আমরা বাইরের ফ্রেমে স্যুইচ করলে আমরা বাইরের ফ্রেমের ভিতরে মোট আইফ্রেমের সংখ্যা খুঁজে পেতে পারি এবং
  • আমরা যে কোন পরিচিত পদ্ধতি দ্বারা ভিতরের ফ্রেমে স্যুইচ করতে পারি।
ফ্রেম থেকে বের হওয়ার সময়, আমাদের অবশ্যই একই ক্রমে বেরিয়ে আসতে হবে যেমনটি আমরা প্রথমে ভিতরের ফ্রেম থেকে এবং তারপর বাইরের ফ্রেম থেকে প্রবেশ করেছি।

সেলেনিয়াম ওয়েবড্রাইভারে নেস্টেড আইফ্রেমস

উপরের নেস্টেড ফ্রেমের এইচটিএমএল কোড নিচে দেখানো হয়েছে।

উপরের এইচটিএমএল কোডটি অন্য আইফ্রেম ট্যাগের মধ্যে আইফ্রেম ট্যাগ (সবুজ রঙে হাইলাইট করা) স্পষ্টভাবে ব্যাখ্যা করে, যা নেস্টেড আইফ্রেমের উপস্থিতি নির্দেশ করে।

বাইরের ফ্রেমে স্যুইচ করার জন্য এবং বাইরের ফ্রেমে টেক্সট প্রিন্ট করার ধাপ নিচে দেওয়া হল: ধাপ 1)

 for(int i=0; i<=size; i++){ driver.switchTo().frame(i); int total=driver.findElements(By.xpath('html/body/a/img')).size(); System.out.println(total); driver.switchTo().defaultContent();} 
  • বাইরের ফ্রেমে স্যুইচ করুন।
  • বাইরের ফ্রেমে টেক্সট প্রিন্ট করে।

একবার আমরা বাইরের ফ্রেমে স্যুইচ করলে, আমাদের জানা উচিত যে বাইরের ফ্রেমের ভিতরে কোন ভিতরের ফ্রেম আছে কিনা

ধাপ ২)

 public class IndexOfIframe { public static void main(String[] args) { WebDriver driver = new FirefoxDriver(); driver.get('https://demo.on2vhf.be/test/on2vhfhome/'); driver.manage().window().maximize(); //driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS); int size = driver.findElements(By.tagName('iframe')).size(); for(int i=0; i<=size; i++){ driver.switchTo().frame(i); int total=driver.findElements(By.xpath('html/body/a/img')).size(); System.out.println(total); driver.switchTo().defaultContent();}}} 
  • বাইরের ফ্রেমের ভিতরে মোট আইফ্রেমের সংখ্যা খুঁজে বের করে।
  • যদি আকার '0' পাওয়া যায় তাহলে ফ্রেমের ভিতরে কোন ভিতরের ফ্রেম নেই।
ধাপ 3)
1 0 0 0 0 0
  • ভিতরের ফ্রেমে স্যুইচ করুন
  • ভিতরের ফ্রেমে লেখা মুদ্রণ করে।
এখানে সম্পূর্ণ কোড:
driver.switchTo().frame(0); 
আউটপুট : উপরের কোডের আউটপুট টেক্সটটি ইনার ফ্রেম এবং আউটার ফ্রেমে প্রিন্ট করবে।