我正在像这样使用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
非常感谢您的帮助
答案 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);