جمعه , ۳۱ فروردین ۱۴۰۳

آموزش Selenium-قسمت یازدهم: FindElement و FindElements در Selenium WebDriver

Selenium
Selenium

چرا شما به دستور Find Element/s نیاز دارید؟

تعامل با یک صفحه وب نیاز به کاربری دارد که عنصر(Element) وب را پیدا کند. دستور Find Element برای شناسایی(یک) عنصر وب در یک صفحه وب به طور منحصر به فرد استفاده می‌شود. در حالیکه فرمان Find Elements برای شناسایی یک لیست از عناصر وب در صفحه وب استفاده می‌شود. چندین روش برای شناسایی یک عنصر وب درون صفحه وب وجود دارد از قبیل ID, Name, Class Name, Link Text, Partial Link Text, Tag Name و XPATH.

سینتکس دستور FindElement 

دستور Find Element با یک Object به عنوان پارامتر درگیر می‌شود و یک شی از نوع Web Element را باز می‌گرداند. از Object می‌توان در استراتژی‌های مختلف موقعیت‌یابی مانند ID, Name, Class Name, XPATH و غیره استفاده نمود. در زیر سینتکس دستور FindElement در Selenium Web Driver ارئه شده است.

WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));

استراتژی موقعیت‌یابی می‌تواند هر یک از مقادیر زیر را شامل شود:

  • ID
  • Name
  • Class Name
  • Tag Name
  • Link Text
  • Partial Link Text
  • XPATH

Locator(موقعیت‌یاب) یک مقدار منحصر به فرد است که با استفاده از آن می‌توان یک عنصر وب را شناسایی کرد. مسئولیت توسعه‌دهندگان و تسترها این است تا اطمینان حاصل نمایند که عناصر وب به صورت منحصر به فرد با استفاده از Propertyهای معین مانند ID یا name قابل شناسایی هستند.

مثال:

WebElement loginLink = driver.findElement(By.linkText("Login"));

سینتکس دستور FindElements

دستور Find Elements با یک Object به عنوان پارامتر درگیر می‌شود و لیستی از Web Elementها را باز می‌گرداند. اگر هیچ عنصری با استفاده از استراتژی موقعیت‌یابیِ و Locator Value  درج شده پیدا نشود، در اینصورت یک لیست خالی Return خواهد شد. در زیر سینتکس دستور Find Elements ارائه شده است.

List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));

مثال:

List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));

Find element در مقابل Find elements

در زیر تفاوت اصلی بین دستورات Find element و Find elements ارائه شده است.

Selenium Figure 11-1
Selenium Figure 11-1

Find Element

Find Elements


اگر با استفاده از یک Locator چندین عنصر وب یافته شود، اولین عنصر وب بار باز می‌گرداند


لیستی از عناصر وب را Return می‌کند


اگر هیچ عنصری با Locator Strategy شما تطبیق نیابد آنگاه یک Exception از نوع NoSuchElementException را Throw خواهد کرد


اگر هیچ عنصری با Locator Strategy شما تطبیق نیابد آنگاه یک لیست خالی را Return خواهد کرد


فقط یک عنصر وب را خواهد یافت


مجموعه‌ای از عناصر که Locator Strategy شما تطبیق می‌یابد را خواهد یافت


قابل اجرا نیست


هر عنصر وب با یک شماره که از صفر شروع می‌شود(درست مانند یک آرایه) Index می‌گردد

مثال: برای یادگیری نحوه استفاده از دستور Find Element، این اپلیکیشن را باز کنید.

سناریو:

۱- AUT(منظور اپلیکیشن تحت تست یا Application Under Test  است) را باز کنید

۲- Radio Button را پیدا کرده و روی آن کلیک کنید

package com.sample.stepdefinitions;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class NameDemo {

public static void main(String[] args) {
// TODO Auto-generated method stub

System.setProperty("webdriver.chrome.driver", "D:\\3rdparty\\chrome\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();

driver.get("http://demo.guru99.com/test/ajax.html");

// Find the radio button for “No” using its ID and click on it
System.out.println (By.Name("name"));

}

}

مثال: نحوه استفاده از دستور Find Elements
سناریو:

۱- URL برای AUT باز کنید

۲- متن Radio Buttonها را پیدا کرده و آن را بر روی کنسول خروجی چاپ کنید


package com.sample.stepdefinitions;

import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class NameDemo {

public static void main(String[] args) {

    System.setProperty("webdriver.chrome.driver", "X://chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    driver.get("http://demo.guru99.com/test/ajax.html");
    List<WebElement> elements = driver.findElements(By.name("name"));
    System.out.println("Number of elements:" +elements.size());

    for (int i=0; i<elements.size();i++){
      System.out.println("Radio button text:" + elements.get(i).getAttribute("value"));
    }
  }
}

خلاصه

  • دستور Find Element آن عنصر از وب را بازمی‌گرداند که با اولین عنصر موجود در صفحه وب تطبیق داشته باشد.
  • دستور Find Elements لیستی از عناصر وب را مطابق با معیارها Return می‌کند.
  • دستور Find Element اگر هیچ عنصری را در تطابق با معیارهای شما نیابد یک Exception از نوع NoSuchElementException را Throw خواهد کرد.
  • دستور Find Elements اگر هیچ عنصری مطابق با معیارها وجود نداشته باشد، یک لیست خالی را Return می‌کند.

 

این یک آموزش طولانی مدت است. بنابراین قسمت‌های بعدی به محض آماده شدن علاوه بر اینکه در صفحه Home وبسایت اطلاعرسانی خواهد شد، به صورت دسته‌بندی شده از اینجا نیز در دسترس است.

ابوالفضل خواجه دیزجی

همچنین ببینید

Selenium

آموزش Selenium-قسمت هفدهم: Mouse Click Event و Keyboard Event و موضوع Action Class در Selenium WebDriver

در این بخش، ما رویداد کیبورد(Keyboard Event) و ماوس(Mouse Event) را در Selenium Webdriver آموزش …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *