我正在尝试使用Appium进行本机应用测试。到目前为止,我一直在本机Android设备和模拟器上评估Appium(用于像Sauce Labs这样的服务)。
我想放弃使用隐式等待,因为在我的Selenium体验中,他们并不总是可靠而且不能与FluentWait / WebDriverWait玩得很好。
当我将Implicit Wait设置为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的服务器来避免这种情况吗?
答案 0 :(得分:0)
是的,有比睡眠更好的解决方案。设置功能appWaitActivity
和/或appWaitActivity
。
答案 1 :(得分:0)
是的,您可以使用:
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(locator);