Il existe deux méthodes qui sont les suivantes: –
Méthode 1 (à l’aide de TouchActions): –
1. //Swipe Right to Left side of the Media Viewer First Page WebElement firstPages = driver.findElement(By.id("media-list")); TouchActions flick = new TouchActions(driver).flick(firstPages,-100,0,0); flick.perform(); 2. //perform swipe gesture TouchActions swipe = new TouchActions(driver).flick(0, -20); swipe.perform();
Méthode 2 (en utilisant javascript): –
public static void swipe(WebDriver driver) { JavascriptExecutor js = (JavascriptExecutor) driver; HashMap swipeObject = new java.util.HashMap(); swipeObject.put("startX", 0.95); swipeObject.put("startY", 0.5); swipeObject.put("endX", 0.05); swipeObject.put("endY", 0.5); swipeObject.put("duration", 1.8); js.executeScript("mobile: swipe", swipeObject); }
Essayez de suivre l’implémentation qui inclut l’argument standard FlickAction.SPEED_NORMAL et également le générateur d’action pour le flick :
import org.openqa.selenium.interactions.touch.FlickAction; private Action getBuilder(WebDriver driver) { return new Action(driver); } WebElement toFlick = driver().findElement(By.id("media-list")); Action flick = getBuilder(driver()).flick(toFlick, -500, 0, FlickAction.SPEED_NORMAL).build(); flick.perform();
Glisser de gauche à droite et vice versa peut être effectué en faisant varier les coordonnées X-asis:
Action coup = getBuilder (driver ()). Coup (toFlick, -500 , 0, FlickAction.SPEED_NORMAL) .build ();
Action coup = getBuilder (driver ()). Coup (toFlick, 500 , 0, FlickAction.SPEED_NORMAL) .build ();
Action coup = getBuilder (driver ()). Coup (toFlick, 0, 500 , FlickAction.SPEED_NORMAL) .build ();
Action coup = getBuilder (driver ()). Coup (toFlick, 0, -500 , FlickAction.SPEED_NORMAL) .build ();
Une raison commune pour que les actions échouent complètement lors du test fonctionnel de sites Web JavaScript lourds est que les actions sont effectuées avant l’initialisation du site. Le moyen le plus simple de le vérifier consiste à append un court sumil avant d’exécuter l’action. Dis 2 secondes.
Si cela résout le problème, vous savez que vous avez une situation critique entre la page d’initialisation et l’exécution de votre code de test.
À ce stade, vous pouvez réécrire votre code pour attendre que l’action soit possible .
Je sais que la question est ancienne, mais j’ai rencontré un certain nombre de problèmes similaires.
Comme d’autres l’ont souligné, c’est généralement une question de timing. J’ai donc constaté que si j’attendais la présence d’un élément (le pilote a restitué le contrôle et la page rendue), puis un bref sumil avant et après l’action du coup, cela fonctionne, certainement sur chaque page / application. Je l’ai testé avec. Donc, notre code ressemble un peu à ceci:
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("some-element-id))); flickIt(driver, element -100, 0); private void flickIt(WebDriver driver, WebElement el, int x, int y) { SyntheticsUtility.sleep(500); // put 0.5s sleeps around it to make sure, need to be stable TouchActions touch = new TouchActions(driver); touch.flick(el, x, y, FlickAction.SPEED_NORMAL); touch.perform(); SyntheticsUtility.sleep(500); }