等待直到方法在超时后不引发异常

时间:2019-09-11 14:38:31

标签: selenium appium android-uiautomator

我正在像这样使用Appium显式等待android应用程序的自动化:

WebDriverWait wait = new WebDriverWait(driver,15);

wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(idPrefix + buttonId)));

但是由于某些原因,在15秒后没有引发异常,并且测试运行基本上仍然停留在等待该元素的状态。

appium日志有时会打印[base driver] Waiting up to 5000000 ms for condition,但我真的不知道这个数字是从哪里来的。

我正在将caps.setCapability(“automationName”, “UiAutomator2");用于Android的appium服务器v1.13.0

非常感谢您的帮助

2 个答案:

答案 0 :(得分:0)

首先,您不需要设置“ UiAutomator2”功能,它已经是appium 1.13.0的默认值。 我快速搜索了如此巨大的超时值,却没有找到任何东西。 在初始化AndroidDriver时是否设置了hiddenWait()参数? 如果提供部分代码,这将非常有帮助。 如果您不希望在没有元素的情况下引发异常,请尝试使用这种方法检查元素是否存在:

driver.findElementsById(yourId).isEmpty();

它将返回true或false,并且不会出现NoSuchElementException,这非常方便。 注意:注意方法名称,它不是findElementById(),不是findElement s ById();

答案 1 :(得分:0)

它看起来像您设置了5000秒的隐式等待时间。

在您的代码中的某处查找此配置集:

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