如何使用Appium在开始和testing期间“等待活动”?

我开始使用appium已经安装的应用程序。

我的驱动程序初始化后。 如何进行投票等待直到显示某个活动?

我看到只有这样才能在启动时等待活动

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

有没有其他的方法? 如何在不初始化的时候等待另一个特定的活动。 说按一下button后点击?

只是sleep x seconds

Solutions Collecting From Web of "如何使用Appium在开始和testing期间“等待活动”?"

具体活动意味着正在显示某些特定元素。 我使用下面的代码等待屏幕上的某个元素:

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

要么:

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

我build议你使用WebDriverWait。 Thread.sleep()不是在testing脚本中使用的好方法

你也可以使用以下内容:

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

要不就:

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

或者像下面这样的东西:

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

如果你想详细了解如何在Appium中使用隐式和显式的等待,那么请访问这个教程

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

您可以使用以下代码每秒钟轮询当前活动。 如果你想减less轮询时间,你可以减less睡眠时间到500,并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); } 

它可以通过不同的方式使用元素来完成。 Webdriver提供“WebDriverWait”,“ExpectedCondition”类来实现这一点。 ExpectedConditions类提供了一些预定义的条件来等待元素:

  1. elementSelectionStateToBe:元素状态是select。
  2. elementToBeClickable:元素存在并可点击。
  3. elementToBeSelected:元素被选中
  4. frameToBeAvailableAndSwitchToIt:框架可用和框架
  5. select。 invisibilityOfElementLocated:一个元素是不可见的
  6. presenceOfAllElementsLocatedBy:位于的当前元素。
  7. 刷新:等待页面刷新时的特定情况。
  8. textToBePresentInElement:特定元素上的文本
  9. textToBePresentInElementValue:和元素值存在的一个
    特定元素。 还有更多你可以学习更多的方法来实现隐式和显式的等待,通过这个urlhttp://roadtoautomation.blogspot.in/2013/10/webdriver-implicit-and-explicit-wait.html

希望能帮助到你…