Java 如果隐式等待设置为0秒,为什么Android上的Appium找不到对象?
我正在试用Appium进行本机应用程序测试。到目前为止,我一直在本地Android设备和模拟器上评估Appium(用于Sauce Labs等服务) 我不想使用隐式等待,因为在我的Selenium体验中,它们并不总是可靠的,也不能很好地使用FluentWait/WebDriverWait 当我将Implicit Wait设置为0或完全禁用它时,我发出的第一个Selenium命令将失败,并显示一条无用的错误消息: 代码Java 如果隐式等待设置为0秒,为什么Android上的Appium找不到对象?,java,android,selenium,appium,Java,Android,Selenium,Appium,我正在试用Appium进行本机应用程序测试。到目前为止,我一直在本地Android设备和模拟器上评估Appium(用于Sauce Labs等服务) 我不想使用隐式等待,因为在我的Selenium体验中,它们并不总是可靠的,也不能很好地使用FluentWait/WebDriverWait 当我将Implicit Wait设置为0或完全禁用它时,我发出的第一个Selenium命令将失败,并显示一条无用的错误消息: 代码 @BeforeMethod public void setUp(){
@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
和/或appWaitActivity
是的,您可以使用以下功能:
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(locator);
你能分享appWaitActivity的完整语法吗?或者分享相关链接,用户可以在其中看到如何使用它的详细信息。你可以从Android API文档中阅读更多关于活动的信息:,在这种情况下,webdriverwait没有帮助。真正的问题是Appium还没有完成我的应用程序的启动,所以我遇到了一个外部异常。见基里尔的答案。我添加了一个代码段。此外,@kirill-zhukov提供了答案。需要告知Appium等待应用程序实际完成加载(即显示特定活动)。如果不这样做,它将先执行Selenium命令,然后才能执行它们。