FindElement بواسطة XPath في Selenium
⚡ ملخص ذكي
FindElement بواسطة XPath في Selenium يُحدد الأمر `FindElements` عنصرًا واحدًا على صفحة ويب بشكل فريد، بينما يُعيد قائمة كاملة بالعناصر المطابقة. يقبل كلا الأمرين كائن مُحدد موقع `By` الذي يشمل مُعرف العنصر (ID)، والاسم (Name)، واسم الفئة (Class Name)، واستراتيجيات XPath.
In Selenium WebDriver، البحث عن عنصر و البحث عن العناصر هي الأوامر الأساسية المستخدمة لتحديد موقع عناصر الويب على الصفحة قبل تنفيذ أي إجراء عليها، مثل النقر أو إدخال نص.
لماذا تحتاج إلى أمر البحث عن العنصر (العناصر)؟
يتطلب التفاعل مع صفحة ويب من المستخدم تحديد موقع عنصر الويب أولاً. يُستخدم أمر "البحث عن عنصر" لتحديد عنصر ويب واحد بشكل فريد داخل صفحة الويب، بينما يُستخدم أمر "البحث عن عناصر" لتحديد قائمة من عناصر الويب. يمكن تحديد عنصر باستخدام عدة طرق. استراتيجيات تحديد المواقع مثل المعرّف، والاسم، واسم الفئة، ونص الرابط، ونص الرابط الجزئي، واسم الوسم، و كسباث.
بناء جملة الأمر FindElement
فيما يلي صيغة أمر FindElement في Selenium برنامج تشغيل الويب:
WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));
يأخذ الأمر FindElement الكائن By كمعامل، ويعيد كائنًا واحدًا من نوع WebElement. ويمكن استخدام الكائن By بدوره مع استراتيجيات تحديد المواقع المختلفة، مثل المعرّف، والاسم، واسم الفئة، وXPath، وغيرها.
يمكن أن تكون استراتيجية تحديد الموقع أيًا من القيم التالية:
- ID
- الاسم
- اسم الفصل
- اسم العلامة
- رابط نصي
- نص ارتباط جزئي
- كسباث
قيمة المُحدِّد هي القيمة الفريدة التي يُمكن من خلالها تحديد عنصر الويب. تقع على عاتق المطورين والمختبرين مسؤولية التأكد من إمكانية تحديد عناصر الويب بشكل فريد باستخدام خصائص معينة مثل المعرّف أو الاسم.
على سبيل المثال:
WebElement loginLink = driver.findElement(By.linkText("Login"));
مثال: ابحث عن العنصر في Selenium
يُستخدم تطبيق العرض التوضيحي التالي لعرض أمر FindElement أثناء العمل:
https://demo.guru99.com/test/ajax.html
السيناريو:
الخطوة 1 : افتح AUT
الخطوة 2 : ابحث عن زر الاختيار وانقر عليه، ثم انقر على زر التحقق.
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("https://demo.guru99.com/test/ajax.html");
// Find the radio button for “No” using its ID and click on it
driver.findElement(By.id("no")).click();
//Click on Check Button
driver.findElement(By.id("buttoncheck")).click();
}
}
بناء جملة الأمر FindElements
عندما تحتاج إلى كل عنصر يطابق محدد الموقع بدلاً من العنصر الأول فقط، استخدم دالة FindElements. فيما يلي صيغتها:
List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));
يأخذ الأمر FindElements الكائن By كمعامل، ويعيد قائمة بعناصر الويب. ويعيد قائمة فارغة إذا لم يتم العثور على أي عناصر باستخدام استراتيجية تحديد الموقع وقيمة الموقع المحددة.
على سبيل المثال:
List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));
مثال: البحث عن العناصر في Selenium
يتم استخدام نفس التطبيق التجريبي لإظهار كيفية تكرار FindElements على قائمة من العناصر المطابقة.
السيناريو:
الخطوة 1 : فتح URL للتطبيق قيد الاختبار
الخطوة 2 : ابحث عن نص أزرار الاختيار واطبعه على وحدة الإخراج
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("https://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"));
}
}
}
البحث عن عنصر مقابل البحث عن عناصر
فيما يلي الاختلافات الرئيسية بين أوامر البحث عن عنصر والبحث عن عناصر:
| البحث عن العنصر | البحث عن العناصر |
|---|---|
| يُعيد هذا الأمر أول عنصر ويب إذا تم العثور على عناصر ويب متعددة بنفس المحدد. | إرجاع قائمة بعناصر الويب |
| يُطلق الاستثناء NoSuchElementException إذا لم تكن هناك عناصر مطابقة لاستراتيجية تحديد الموقع | إرجاع قائمة فارغة إذا لم تكن هناك عناصر ويب مطابقة لاستراتيجية محدد المواقع |
| لن يعثر البحث عن عنصر باستخدام XPath إلا على عنصر ويب واحد. | سيجد مجموعة من العناصر التي تتطابق مع استراتيجية تحديد الموقع |
| غير قابل للتطبيق | يتم فهرسة كل عنصر من عناصر الويب برقم يبدأ من 0، تمامًا مثل المصفوفة. |


