Selenium 等待直到方法在超时后不引发异常

Selenium 等待直到方法在超时后不引发异常,selenium,appium,android-uiautomator,Selenium,Appium,Android Uiautomator,我在Appium中使用显式等待android应用程序自动化,如下所示: WebDriverWait wait = new WebDriverWait(driver,15); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(idPrefix + buttonId))); 但是由于某种原因,15秒后没有抛出异常,测试运行基本上仍然停留在等待元素的状态 appium日志有时会打印出等待5000000毫秒的条件[base

我在Appium中使用显式等待android应用程序自动化,如下所示:

WebDriverWait wait = new WebDriverWait(driver,15);

wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(idPrefix + buttonId)));
但是由于某种原因,15秒后没有抛出异常,测试运行基本上仍然停留在等待元素的状态

appium日志有时会打印出等待5000000毫秒的条件[base driver],但我真的不知道这个数字是从哪里来的

我正在使用appium server v1.13.0,它具有针对android的
caps.setCapability(“automationName”、“UiAutomator2”);


非常感谢您的帮助首先,您不需要设置“UiAutomator2”功能,它已经是appium 1.13.0的默认值。 我快速搜索了这么大的超时值,实际上什么也没找到。 初始化AndroidDriver时是否隐式设置了wait()参数? 如果您提供部分代码,这将非常有用。 如果不希望在没有元素时引发异常,请尝试使用以下方法检查元素是否存在:

driver.findElementsById(yourId).isEmpty();
它将返回true或false,并且不会有任何异常,这非常方便。
注意:注意方法名,它不是findElementById(),它的findElementsById();

看起来您可能设置了5000秒的隐式等待时间

在代码中的某个位置查找此配置集:

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

我想抛出一个异常,我的问题是应用程序被卡住了,一直在搜索元素。请提供android驱动程序初始化的代码。我打赌你设置了隐式等待超时,并且可能在时间单位上出错。我只做
caps.setCapability(“automationName”,“UiAutomator2”);
我没有只设置隐式等待WebDriverWait,但我也尝试了
driver.manage().timeouts().implicitlyWait(17,TimeUnit.SECONDS);
,这也没有改变任何东西您尝试过搜索“5000”吗在你的整个项目中有价值吗?没有魔法,如此巨大的超时肯定意味着你在代码中的某个地方设置了它。哦,我的天啊,谢谢,出于某种原因,我只搜索了“driver.manage().timeouts()”你能在调试器中逐步完成代码吗?调用
wait.until(…)
或者这之后是否有一行代码导致了问题?你能发布更多的代码吗?你使用隐式等待吗?你不能根据文档混合隐式和WebDriverWait…你可以,但有时会发生不好的/意外的事情。不,我没有,我实际上执行了隐式等待,因为我阅读了,我不应该同时使用它们。这就是错误所在或者消息“等待5000000毫秒以获得条件”向我表明。这确实解决了你的问题吗?你下面的评论表明你搜索了5000并发现了问题?是的,隐式等待在5000秒的时间内隐藏在某些代码部分(我接管了一个项目)