selenium - 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
解决方案
隐式等待意味着:
隐式等待是告诉WebDriver在尝试查找一个或多个元素时轮询DOM
一段时间(如果它们不是立即可用的)。
显式等待:
显式等待是您定义的代码,用于在继续执行代码之前等待某个条件发生。
提供了一些方便的 方法来帮助您编写只等待所需时间的代码:
在这种情况下,代码将是:
WebElement myDynamicElement = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement")));
如果您像这样使用显式等待,那么就没有问题。但是,如果您使用的是Thread.sleep(time)
,请注意,这是一种最坏/极端的显式等待,应尽可能避免。
希望这会帮助你。
推荐阅读
- angular - 如何从分离的角度工作区调试 Angular 库
- android - Android Preview DEPTH16 Image on Surfaceview 作为热图
- python - y 轴上带有 % 的累积图,数据来自 panda DF
- python - Python根据列数更改参数
- python - 如何在python中将迭代函数转换为递归函数
- process - BPMN 2.0 中用于问答流程的消息流
- php - 跨域会话
- python - python类中的`__init__()`是什么
- powerbi - 与数据表列的 OnSelect 混淆潜在故障(仅在 PowerBI 中)
- css - 在两个组件之间切换时如何避免闪光效果?