如果隐式等待设置为 0 秒,为什么 Android 上的 Appium 无法找到对象?
Why does Appium on Android fail to find objects if Implicit Wait is set to 0 seconds?
我正在试用 Appium 进行原生应用测试。到目前为止,我一直在本机 Android 设备和模拟器(与 Sauce Labs 等服务一起使用)上评估 Appium。
我想放弃使用隐式等待,因为在我的 Selenium 体验中,它们并不总是可靠的,而且与 FluentWait/WebDriverWait 配合得不好。
当我将隐式等待设置为 0 或完全禁用它时,我发出的第一个 Selenium 命令将失败并显示无用的错误消息:
代码
@BeforeMethod
public void setUp(){
driver = new AndroidDriver(serverAddress, capabilities);
}
@Test
public void myTest(){
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.presenceOfElementLocated(By.name("MyElement")));
}
错误:
org.openqa.selenium.WebDriverException: 处理命令时发生未知的服务器端错误。
我发现如果我使用 Thread.sleep(3000) 手动等待大约 3 秒;首次启动 AppiumDriver 实例后,一切正常。
Appium 似乎允许您发送命令,即使被测应用尚未完成启动也是如此。如果应用程序尚未完成启动,则会出现该错误。
是否有比使用 Thread.sleep(3000); 更好的解决方案?我可以配置 Appium 的服务器来避免这种情况吗?
是的,有比睡眠更好的解决方案。设置能力 appWaitActivity
and/or appWaitActivity
.
是的,你可以使用这个:
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(locator);
我正在试用 Appium 进行原生应用测试。到目前为止,我一直在本机 Android 设备和模拟器(与 Sauce Labs 等服务一起使用)上评估 Appium。
我想放弃使用隐式等待,因为在我的 Selenium 体验中,它们并不总是可靠的,而且与 FluentWait/WebDriverWait 配合得不好。
当我将隐式等待设置为 0 或完全禁用它时,我发出的第一个 Selenium 命令将失败并显示无用的错误消息:
代码
@BeforeMethod
public void setUp(){
driver = new AndroidDriver(serverAddress, capabilities);
}
@Test
public void myTest(){
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.presenceOfElementLocated(By.name("MyElement")));
}
错误: org.openqa.selenium.WebDriverException: 处理命令时发生未知的服务器端错误。
我发现如果我使用 Thread.sleep(3000) 手动等待大约 3 秒;首次启动 AppiumDriver 实例后,一切正常。
Appium 似乎允许您发送命令,即使被测应用尚未完成启动也是如此。如果应用程序尚未完成启动,则会出现该错误。
是否有比使用 Thread.sleep(3000); 更好的解决方案?我可以配置 Appium 的服务器来避免这种情况吗?
是的,有比睡眠更好的解决方案。设置能力 appWaitActivity
and/or appWaitActivity
.
是的,你可以使用这个:
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(locator);