java - 如何减少appium中的元素搜索默认时间

标签 java selenium-webdriver appium

我刚刚注意到,当元素不存在时,Appium 和 Selenium 至少需要 2 分钟才能找到元素。

我想减少搜索时间。

代码是:

 if(!driver.findElements(By.id(AppConstants.notificationcount)).isEmpty())
{

  // DO SOMETHING

}
else
{

   System.out.println("No Element available");    
}

现在大部分时间我的元素不可用,所以我希望 appium 检查它并快速重定向到 ELSE 部分,但这需要很长时间,有什么解决方案吗?

最佳答案

您是否检查过您的隐性等待时间?
默认情况下为 0,但也许您将其设置为大于 2 分钟的值:

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

如果您的隐式等待时间大于 0 并且您正在使用

搜索元素
driver.findElements(...);

但是您的元素不存在,那么Selenium 将等待整个指定的时间!


Selenium 不会等待,至少找到一个元素时。在这种情况下,它将搜索页面一次并立即返回找到的元素列表。

因此 findElements() 非常适合检查元素是否存在,但仅在您指定非常低的隐式等待时间时检查不存在(或默认为 0)。


如果您出于任何原因绝对需要隐式等待时间 > 0,那么您可以创建自己的方法来处理此问题,如 this solution .


在您的情况下,您可以在发布代码之前将隐式等待时间设置为 0:

driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
// then follows your code:
if(!driver.findElements(By.id(AppConstants.notificationcount)).isEmpty())
{

  // DO SOMETHING

}
else
{

   System.out.println("No Element available");    
}

如果您在其他地方需要隐式等待时间而不是 0,那么只需在您的代码段后将其设置回原始值即可。

关于java - 如何减少appium中的元素搜索默认时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31876411/

相关文章:

android - Dexguard 发布 apk 不显示 UI automator 中元素的资源 ID

java - Lucene搜索引擎中使用自建方法

java - 我正在使用列表和 OnItemClickListener,但是当我单击该项目时,它不会去任何地方

java - Selenium WebDriver 中 org.openqa.selenium.remote.session.StripAnyPlatform 类的用途是什么?

python - 如何配置 ChromeDriver 通过 Selenium 以 Headless 模式启动 Chrome 浏览器?

html - 使用 Chrome 的元素的 XPath?

java - jackson :忽略 setter/getter ,但不是@JsonView

java - 关于 JazzyListView Android

python - 阿皮姆 |机器人框架|无法使用自定义定位器策略运行关键字来查找元素

java - Appium MobileElement.tap();不适用于移动网络的 iosSimulator 8.2