چرا شما به دستور 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 ارائه شده است.
Find Element | Find Elements |
---|---|
|
|
|
|
|
|
|
|
مثال: برای یادگیری نحوه استفاده از دستور 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 وبسایت اطلاعرسانی خواهد شد، به صورت دستهبندی شده از اینجا نیز در دسترس است.