Java 在webdriver中找不到元素
我正在使用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”:多个:falseJava 在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.
如果您使用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();
}`