Java 在webdriver中找不到元素

Java 在webdriver中找不到元素,java,selenium-webdriver,appium,Java,Selenium Webdriver,Appium,我正在使用Java用Appium自动化一个android应用程序。我的情况是,我需要单击按钮1或按钮2,以出现的为准 应用程序错误日志:[debug][AndroidBootstrap][BOOTSTRAP log][debug] 未能找到元素。正在清除辅助功能缓存并重试。 [debug][AndroidBootstrap][BOOTSTRAP LOG][debug]查找 “//android.widget.ImageButton[@resource id='net.ilius.android.

我正在使用Java用Appium自动化一个android应用程序。我的情况是,我需要单击按钮1或按钮2,以出现的为准

应用程序错误日志:[debug][AndroidBootstrap][BOOTSTRAP log][debug] 未能找到元素。正在清除辅助功能缓存并重试。 [debug][AndroidBootstrap][BOOTSTRAP LOG][debug]查找 “//android.widget.ImageButton[@resource id='net.ilius.android.meetic:id/profileMailPremiumButton'] 使用上下文ID为“”的“XPATH”:多个:false


如果您使用isDisplayed()并且元素在UI上不存在,它将抛出异常-找不到元素

因此,不是首先使用findElements检查该元素是否存在:
driver.findElements(selector.isEmpty()

如果为空,则表示元素现在不可用,您可以转到else块

使用这段代码: `


请创建一个。特别是包括完整的错误消息和HTML的相关部分。@sandy:使用findElements和isEmpty方法检查元素是否存在。定位器策略
findElementByXPath(“//android.widget.ImageButton[@resource id='net.ilius.android.meetic:id/profileMailPremiumButton'])
findElementById(“net.ilius.android.meetic:id/profileMailPremiumButton”)
引用同一元素?@DebanjanB编辑。很抱歉,我收到错误:[debug][AndroidBootstrap][BOOTSTRAP LOG][debug]未能找到元素。正在清除辅助功能缓存并重试。是。事实上,我需要点击任何人按钮,无论是谁。逻辑是只有一个按钮将出现。它仍在搜索“button1”。请尝试以下操作----if(!driver.findElements(By.xPath(//android.widget.ImageButton[@resource id='button1']))).isEmpty(){if(driver.findelementbypath(//android.widget.ImageButton[@resource id='button1']))).isDisplayed())driver.findelementbypath(“//android.widget.ImageButton[@resource id='button1']”。单击();}否则{driver.findElementById(“button2”)。单击();}`这与您上面提到的代码相同,对吗?我尝试过,执行时,当按钮2仅出现在应用程序中时,它会搜索按钮1。
if (driver.findElementByXPath("//android.widget.ImageButton[@resource-id='net.ilius.android.meetic:id/profileMailPremiumButton']")
        .isDisplayed()) {
     driver.findElementByXPath("//android.widget.ImageButton[@resource-id='net.ilius.android.meetic:id/profileMailPremiumButton']")
        .click();
} else {
    driver.findElementById("net.ilius.android.meetic:id/profileMailButton").click();
}
if (!driver.findElements(By.xPath("//android.widget.ImageButton[@resource-id='button1']")).isEmpty()) {
     driver.findElementByXPath("//android.widget.ImageButton[@resource-id='button1']").click();
} else {
    driver.findElementById("button2").click();
}`