Actions בסלניום היא מחלקה הנותנת לנו יכולות לבצע פעולות מורכבות יותר מלחיצה על כפתור או שליחת טקסט, בד"כ מדובר ברצף של פעולות שהתאגדו לכדי מתודה אחת, מתודה שממומשת כאמור במלחקת Actions, בדף זה נראה כמה שימושים שונים של Actions
ניקח את האתר הרשמי של jQuey לדוגמא לשימוש ב-Drag&Drop ונפעיל עליו Actions עם ה-Webdriver:
public void Drag_Drop() { driver.get("http://jqueryui.com/demos/droppable/"); WebElement draggable = driver.findElement(By.id("draggable")); WebElement droppable = driver.findElement(By.id("droppable")); new Actions(driver).dragAndDrop(draggable, droppable).build().perform(); }
אופציה נוספת:
public void Drag_Drop() { driver.get("http://jqueryui.com/demos/droppable/"); Actions builder = new Actions(driver); Action dragAndDrop = builder.clickAndHold(someElement) .moveToElement(otherElement) .release(otherElement) .build(); dragAndDrop.perform(); }
ניקח את האתר הרשמי של jQuey לדוגמא לשימוש בבחירה מרובה ונפעיל עליו Actions עם ה-Webdriver:
public void selectMultiple() throws InterruptedException { driver.get("http://jqueryui.com/demos/selectable/"); List listItems = driver.findElements(By .cssSelector("ol#selectable *")); Actions builder = new Actions(driver); builder.clickAndHold(listItems.get(1)).clickAndHold(listItems.get(2)) .click(); Action selectMultiple = builder.build(); selectMultiple.perform(); }
ניקח את האתר של w3schools לדוגמא לשימוש ב Mouse Over ונפעיל עליו Actions עם ה-Webdriver:
public void selectMultiple() throws InterruptedException { driver.get("http://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_event_mouseover_mouseout"); Actions builder = new Actions(driver); WebElement element = webdriver.findElement(By.cssSelector("p[stye='background-color: lightgray;']")); builder.moveToElement(we).moveToElement(webdriver.findElement(By.id("Some_ID"))).click().build().perform(); }
ניתן לגלול למטה את הדף עם webdriver בשני אופנים האחד לפי פרמטר של פיקסלים, כך:
int range = 500; // טווח הגלילה בפיקסלים ((JavascriptExecutor) driver).executeScript("window.scrollBy(0," + range + ")", "");
השני , עד שהאלמנט יופיע, כך:
WebElement element = driver.findElement(By.id("myID")); ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);
לשימוש בלחצן הימני של העכבר על אלמנט מסויים (בשביל נגיד לפתוח תפריט), נכניס את האקשן הבא:
WebElement elementToRightClick = driver.findElement(By.id("myID")); Actions clicker = new Actions(driver); clicker.contextClick(elementToRightClick).perform();
ישנם כמה מימושים לבחור תת תפריט, אתן פה אחת מהן:
WebElement subroot = driver.findElement(By.id("myID")); builder.moveToElement(subroot).build().perform(); ((JavascriptExecutor)driver).executeScript("document.getElementById('" + SubMenu + "').click();");
פונקציה מאוד פשוטה ללחיצה כפולה על העכבר:
WebElement doubleClickElement = driver.findElement(By.id("myID")); Actions action = new Actions(driver); action.doubleClick(doubleClickElement); action.perform();