2015-03-01 11 views
9

Zaczynam już zainstalowaną aplikację przy użyciu Appium.Jak "czekać na aktywność" przy użyciu Appium, na początku i podczas samego testu?

Po zainicjowaniu sterownika. Jak sprawić, by ankieta - czekać, aż wyświetli się określone działanie?

widziałem tylko w ten sposób, aby czekać na aktywność podczas uruchamiania

cap.setCapability("app-wait-activity", "activity-to-wait-for");

Czy jest jakiś inny sposób? Jak mogę poczekać na inną określoną aktywność, gdy się jej nie inicjuję. Powiedz po kliknięciu przycisku?

tylko sleep x seconds?

Odpowiedz

11

Określona aktywność oznacza wyświetlanie określonego elementu. używam poniższy kod, żeby czekać, aż pewnego określonego elementu na ekranie:

WebDriverWait wait = new WebDriverWait(driver, 30); 
wait.until(ExpectedConditions.elementToBeClickable(By 
     .xpath("//android.widget.Button[contains(@text, 'Log In')]"))); 

czyli

WebDriverWait wait = new WebDriverWait(driver, 30); 
wait.until(ExpectedConditions.presenceOfElementLocated(By 
      .xpath("//android.widget.TextView[contains(@resource-id, 'action_bar_title')]"))); 
1

Również można skorzystać z następujących opcji:

getDriver().manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 

lub po prostu :

driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 

lub coś podobnego:

Thread.sleep(5000); 
2

Proponuję użyć WebDriverWait. Thread.Sleep() nie jest dobrym sposobem do wykorzystania w skryptach testowych

1
WebDriverWait wait = new WebDriverWait(driver,20); 
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("about_me"))); 

Jeśli chcesz wiedzieć, w jaki sposób niejawny i wyraźne oczekiwanie może być stosowany w Appium następnie odwiedzić tę TUTORIAL

0

może on Zrób to na różne sposoby, używając elementu. Webdriver zapewnia klasy "WebDriverWait", "ExpectedCondition", aby to zaimplementować. Klasa ExpectedConditions zapewnić pewien zestaw predefine warunkach czekać elementy jak:

  1. elementSelectionStateToBe: stanem elementem jest wybór.
  2. elementToBeClickable: element jest obecny i można go kliknąć.
  3. elementToBeSelected: element wybrany
  4. frameToBeAvailableAndSwitchToIt frame jest dostępna i rama
  5. wybrane. niewidzialnośćOffElementLocated: element jest niewidoczny
  6. presenceOfAllElementsLocatedBy: obecny element zlokalizowany wg.
  7. odświeżony: poczekaj na określony warunek podczas odświeżania strony.
  8. textToBePresentInElement text obecne w szczególności element
  9. textToBePresentInElementValue a elementem wartość obecna na
    danego elementu.i wiele więcej można dowiedzieć się więcej sposobów realizacji niejawna i wyraźne oczekiwanie, przechodząc przez ten link: http://roadtoautomation.blogspot.in/2013/10/webdriver-implicit-and-explicit-wait.html

nadzieję, że to pomaga ...

1
long startTime = System.currentTimeMillis(); 
while(System.currentTimeMillis() - startTime < Time_Out) 
    if (getDriver().currentActivity().equals(activity)) 
     break; 
1

Można użyć następującego kodu do sondowania bieżące działanie w każdej sekundzie. Jeśli chcesz zmniejszyć czas odpytywania, możesz skrócić czas snu do 500 i 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); 
} 
Powiązane problemy