البحث عن العناصر في Selenium - FindElement بواسطة XPath
لماذا تحتاج إلى أمر البحث عن العنصر (العناصر)؟
يتطلب التفاعل مع صفحة الويب من المستخدم تحديد موقع عنصر الويب. يتم استخدام أمر Find Element لتحديد عنصر ويب (واحد) بشكل فريد داخل صفحة الويب. حيث يتم استخدام أمر Find Elements لتحديد قائمة عناصر الويب داخل صفحة الويب بشكل فريد. هناك طرق متعددة لتحديد عنصر الويب بشكل فريد داخل صفحة الويب مثل المعرف والاسم واسم الفئة ونص الرابط ونص الرابط الجزئي واسم العلامة وXPATH.
بناء جملة الأمر FindElement
WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));
Selenium يأخذ أمر Find Element الكائن حسب كمعلمة ويعيد كائنًا من قائمة النوع WebElement Selenium. يمكن استخدام "حسب الكائن" بدوره مع إستراتيجيات تحديد المواقع المختلفة مثل البحث عن العنصر بواسطة المعرف Seleniumوالاسم واسم الفئة وXPATH وما إلى ذلك. يوجد أدناه بناء جملة أمر FindElement في Selenium سائق الويب.
يمكن أن تكون إستراتيجية تحديد الموقع أيًا من القيم التالية.
- ID
- Selenium البحث عن العنصر بالاسم
- اسم الفصل
- اسم العلامة
- رابط نصي
- نص ارتباط جزئي
- XPATH
قيمة محدد الموقع هي القيمة الفريدة التي يمكن من خلالها تحديد عنصر الويب. تقع على عاتق المطورين والمختبرين مسؤولية التأكد من إمكانية التعرف على عناصر الويب بشكل فريد باستخدام خصائص معينة مثل المعرف أو الاسم.
على سبيل المثال:
WebElement loginLink = driver.findElement(By.linkText("Login"));
مثال: ابحث عن العنصر في Selenium
يتم استخدام التطبيق التالي لغرض العرض التوضيحي
http://demo.guru99.com/test/ajax.html
السيناريو:
الخطوة الأولى: افتح AUT
الخطوة الأولى: ابحث عن زر الاختيار وانقر عليه
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 driver.findElement(By.id("no")).click(); //Click on Check Button driver.findElement(By.id("buttoncheck")).click(); } }
بناء جملة الأمر FindElements
List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));
البحث عن العناصر في Selenium يأخذ الأمر By object كمعلمة ويعيد قائمة بعناصر الويب. تقوم بإرجاع قائمة فارغة إذا لم يتم العثور على عناصر باستخدام استراتيجية محدد المواقع وقيمة محدد المواقع المحددة. يوجد أدناه بناء جملة أمر البحث عن العناصر.
على سبيل المثال:
List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));
مثال: البحث عن العناصر في Selenium
السيناريو:
الخطوة الأولى: افتح عنوان URL للتطبيق قيد الاختبار
الخطوة الأولى: ابحث عن نص أزرار الاختيار وقم بطباعته على وحدة التحكم في الإخراج
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")); } } }
البحث عن عنصر مقابل البحث عن العناصر
فيما يلي الاختلافات الرئيسية بين أوامر البحث عن العناصر وأوامر البحث عن العناصر.
البحث عن العنصر | البحث عن العناصر |
---|---|
إرجاع أول عنصر ويب إذا كان هناك العديد من عناصر الويب الموجودة بنفس محدد المواقع | إرجاع قائمة بعناصر الويب |
يُطرح الاستثناء NoSuchElementException في حالة عدم وجود عناصر مطابقة لاستراتيجية محدد المواقع | إرجاع قائمة فارغة إذا لم تكن هناك عناصر ويب مطابقة لاستراتيجية محدد المواقع |
البحث عن عنصر بواسطة XPath سوف يعثر على عنصر ويب واحد فقط | سيجد مجموعة من العناصر التي تتوافق مع استراتيجية تحديد المواقع. |
غير قابل للتطبيق | تتم فهرسة كل عنصر ويب برقم يبدأ من 0 تمامًا مثل المصفوفة |
الملخص
- يقوم أمر Find Element بإرجاع عنصر الويب الذي يتطابق مع أول عنصر داخل صفحة الويب.
- يقوم أمر Find Elements بإرجاع قائمة بعناصر الويب التي تطابق المعايير.
- ابحث عن العنصر بواسطة XPath في Selenium يرمي الأمر NoSuchElementException إذا لم يعثر على العنصر المطابق للمعايير.
- يقوم أمر Find Elements بإرجاع قائمة فارغة في Selenium إذا لم تكن هناك عناصر مطابقة للمعايير