用webdriver找不到元素

时间:2018-04-10 09:23:29

标签: java selenium-webdriver appium

我正在使用Java使用Appium自动化Android应用程序。我的情况是,我需要点击按钮1或按钮2,无论哪个存在

  

Appium错误日志:[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug]   无法找到元素。清除辅助功能缓存并重试。   [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug]查找   ' // android.widget.ImageButton [@资源-ID =' net.ilius.android.meetic:ID / profileMailPremiumButton']'   使用' XPATH'与contextId:'' multiple:false

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();
}

1 个答案:

答案 0 :(得分:1)

如果您使用 isDisplayed()并且UI 上没有元素,则会抛出异常 - 找不到元素

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

如果它是空的,则表示元素不可用,现在你可以转到else块

使用以下代码: `

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();
}`