Je démarre une application déjà installée en utilisant appium.
Une fois mon pilote initialisé. Comment puis-je faire en sorte que le sondage attende qu'une certaine activité s'affiche?
Je n'ai vu que cette façon d'attendre l'activité lors du démarrage
cap.setCapability("app-wait-activity", "activity-to-wait-for");
Est-ce qu'il y a un autre moyen? Comment attendre une autre activité spécifique lorsque je n'initialise pas. Dire après un clic sur un bouton?
juste sleep x seconds
?
Une activité spécifique signifie qu'un élément spécifique est affiché. J'utilise le code suivant pour attendre un certain élément à l'écran:
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.elementToBeClickable(By
.xpath("//Android.widget.Button[contains(@text, 'Log In')]")));
ou:
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.presenceOfElementLocated(By
.xpath("//Android.widget.TextView[contains(@resource-id, 'action_bar_title')]")));
Vous pouvez utiliser le code suivant pour interroger l'activité en cours chaque seconde. Si vous souhaitez réduire le temps d'interrogation, vous pouvez réduire le temps de sommeil à 500 et wait*2
:
public void waitForActivity(String desiredActivity, int wait) throws InterruptedException
{
int counter = 0;
do {
Thread.sleep(1000);
counter++;
} while(driver.currentActivity().contains(desiredActivity) && (counter<=wait));
log("Activity appeared :" + driver.currentActivity(), true);
}
long startTime = System.currentTimeMillis();
while(System.currentTimeMillis() - startTime < Time_Out)
if (getDriver().currentActivity().equals(activity))
break;
WebDriverWait wait = new WebDriverWait(driver,20);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("about_me")));
Si vous souhaitez savoir en détail comment l'attente implicite et explicite peut être utilisée dans Appium, visitez ce TUTORIEL
Cela peut être fait de différentes manières en utilisant element. Webdriver fournit des classes "WebDriverWait", "ExpectedCondition" pour implémenter cela. La classe ExpectedConditions fournit un ensemble de conditions prédéfinies pour attendre les éléments comme:
J'espère que cela aide...
Vous pouvez également utiliser les éléments suivants:
getDriver().manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
ou juste:
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
ou quelque chose comme ceci:
Thread.sleep(5000);
Je vous suggère d'utiliser WebDriverWait. Thread.sleep () n'est pas un bon moyen d'utiliser dans vos scripts de test