קורס אוטומציה - חינם !!!

Selenium WebDriver
onLineCourseWebDriver_elementMethods

בשיעורים הקודמים ראינו כיצד ניתן לזהות אלמנטים על ה-DOM בדרכים שונות. כעת נלמד מה ניתן לעשות איתם לאחר הזיהוי, כיצד ניתן לטפל בהם. לכל פקד (אלמנט) יש דרך התמודדות שונה, אותה אנו נראה מיד.

 

Radio Button:

הפקד הראשון ואולי הפשוט ביותר הוא כפתור הרדיו, את האלמנט הזה נוכל לזהות ועליו נפעיל את הפעולה: click כפי שניתן לראות בדוגמא כאן:

WebElement element = driver.findElement(By.id("u_0_6"));
element.click();
// Or:
driver.findElement(By.id("u_0_6")).click();

 

ניתן גם לבצע פעולה מורכבת יותר, כמו למשל לחיצה על כפתור הרדיו אך ורק במידה והא לא לחוץ כבר (על ידי שימוש בפעולת ה-isSelected) , ניתן לעטוף את הקוד בפונקציה ולקרוא לה אח"כ מתי שרוצים, לדוגמא:

public void selectRadiaButton()
{
WebElement radio = driver.findElement(By.id("u_0_6"));
boolean selected_value = radio.isSelected();
if(!selected_value)
radio.click();
}

Check Box:

אופן הפעולה על CheckBox זהה לחלוטין כמו אופן הפעולות שביצענו על Radio Button. כאשר ההבדל ביניהם מבחינת הפונקציונליות הוא עניין הבחירה המרובה (ב-Checkbox כן , ב-Radio Button לא).
ניתן לראות את הדוגמא כאן:

WebElement element = driver.findElement(By.id("conditions_agree"));
element.click();
// Or:
driver.findElement(By.id("conditions_agree")).click();

גם במקרה זה נוכל להפעיל את מתודת ה-isSelected בתוך פונקציה ולהשתמש בה, כך:

public void selectCheckBox()
{
WebElement check = driver.findElement(By.id("conditions_agree"));
boolean selected_value = check.isSelected();
if(!selected_value)
check.click();
}

 

* - בשלבים מאוחרים יותר, כאשר בונים פונקציות תשתיתיות, ניתן לשכתב את הפונקציות הללו שיהיו גנריות, שיקבלו ערך, - אלמנט ויבצעו עליו את הפעולה


Text Box / Text Area:

שדה הטקסט נועד לאפליקציה בכדיי לקחת מאיתנו מידע מילולי , שמות, כתובות, סיסמאות וכו'. אל שדה הטקסט הזה אנו נזין מחרוזות של תווים - String תוך שימוש בפעולת ה-sendKeys , כמו שבדוגמא כאן:

WebElement element = driver.findElement(By.id("u_0_9"));
element.sendKeys("Yoni");
// Or:
driver.findElement(By.id("u_0_9")).sendKeys("Yoni");

 

במידה וקיים כבר ערך בשדה הטקסט, אותו אנחנו נרצה לנקות לפני הכנסת הטקסט החדש שלנו, נשתמש במתודת ה-clear , וגם כאן, נוכל לעטוף הכל בפונקציה משלנו (שאח"כ נוכל לכתוב אותה בצורה גנרית יותר) , להלן הפונקציה:

public void insertText(String textValue)
{
WebElement textBox = driver.findElement(By.id("u_0_9"));
textBox.clear();
textBox.sendKeys(textValue);
}

 

פונקציה גנרית יותר תיראה כך:

public void insertText(String textValue, WebElement textBox)
{
textBox.clear();
textBox.sendKeys(textValue);
}

Combo Box / Drop Down:

השימוש בפקד ה-ComboBox או DropDown הוא אחד השימושים הנפוצים ביותר ב-Form-ים השונים, בעיקרון פקד זה מאפשר לנו לבחור ערך מתוך רשימה סגורה, בואו נראה כיצד נוכל לבחור שדה מסויים מתוך הרשימה. נתחיל כרגיל עם דוגמא:

 

בשביל לבחור שדה מסויים מהרשימה נצטרך לעבוד עם מחלקה חדשה בשם: Select דרכה נייצר אובייקט, תוך כדי שליחת האלמנט אל הבנאי שליה ועל האובייקט הזה נפעיל כל מיני פעולות
בדוגמא הבאה אני מראה כיצד אנו מייצרים אובייקט בשם selectMonth ומפעילים את מתודת ה-selectByVisibleText , מצודה זו בוחרת לפי הטקסט הויזואלי שמוצג באפליקציה:

WebElement combo = driver.findElement(By.id("month"));
Select selectMonth = new Select(combo);
selectMonth.selectByVisibleText("Apr");

 

מתודת: selectByIndex , תיתן לנו את האופציה לבחור שדה מסויים לפי האינדקס שלו:

WebElement combo = driver.findElement(By.id("month"));
Select selectMonth = new Select(combo);
selectMonth.selectByIndex(4);

 

מתודת: selectByValue , תיתן לנו את האופציה לבחור שדה מסויים לפי הערך שלו:

WebElement combo = driver.findElement(By.id("month"));
Select selectMonth = new Select(combo);
selectMonth.selectByValue("4");

 

ניתן כמובן גם לדעת את גודל הרשימה שלנו (מספר האלמנטים המופיעים ב-ComboBOx) , בעזרת מתודת ה-getOptions של אובייקט ה-Select ומתודת ה-size שאנו נפעיל אותה על הרשימה המוחזרת:

WebElement combo = driver.findElement(By.id("month"));
Select selectMonth = new Select(combo);
List listItems = selectMonth.getOptions();
System.out.println("Number of Drop Down Elements: " + listItems.size());

 

וכשיש לנו את הערך הזה, נוכל לרוץ על כל האלמנטים ב-ComboBox ולהדפיס אותם , כך למשל:

WebElement combo = driver.findElement(By.id("month"));
Select selectMonth = new Select(combo);
List listItems = selectMonth.getOptions();
for (int i = 0; i < listItems.size() ; i++)
{
String value = listItems.get(i).getText();
System.out.println(value);
}

 

סרטון הדרכה - פעולות על אלמנטים: