首页 > 解决方案 > Selenium + Appium - ImplicitlyWait 不起作用

问题描述

我正在尝试为我的 Android 应用程序自动化一些测试,但 ImplicitlyWait 不起作用。
我得到错误元素不立即存在。如果我使用显式等待,它工作正常,但我不想一直显式它。

Code:
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

# Output log
[BaseDriver] Waiting up to 30000 ms for condition

我在用着:

 - selenium-java: 3.13  
 - io.appium.java-client: 6.1.0

标签: seleniumselenium-webdriverautomated-testsappiumappium-android

解决方案


隐式等待意味着:

隐式等待是告诉WebDriver在尝试查找一个或多个元素时轮询DOM一段时间(如果它们不是立即可用的)。

显式等待

显式等待是您定义的代码,用于在继续执行代码之前等待某个条件发生。

提供了一些方便的 方法来帮助您编写只等待所需时间的代码:

在这种情况下,代码将是:

WebElement myDynamicElement = (new WebDriverWait(driver, 10))
  .until(ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement")));  

如果您像这样使用显式等待,那么就没有问题。但是,如果您使用的是Thread.sleep(time),请注意,这是一种最坏/极端的显式等待,应尽可能避免。

希望这会帮助你。


推荐阅读