【问题标题】:Appium checking if element is displayedAppium 检查元素是否显示
【发布时间】:2020-07-21 14:39:08
【问题描述】:

我正在使用适用于 Android 的 Appium

点击元素的以下工作

driver.findElement(By.xpath("//*[@resource-id='com.app.android:id/prelogin_signup']")).click();

但我正在尝试检查屏幕上是否有元素,我尝试了以下操作

if (driver.findElement(By.xpath("//*[@resource-id='com.app.android:id/prelogin_signup']")).isDisplayed()) {
    System.out.println("FOUND");
} else {
    System.out.println("NOT FOUND!");
}

但它返回一个异常说

INFO: HTTP Status: '405' -> incorrect JSON status mapping for 'unknown error' (500 expected)
org.openqa.selenium.WebDriverException: Method is not implemented

如何检查某个元素是否在屏幕上?

【问题讨论】:

    标签: appium


    【解决方案1】:

    你可以试试这个,希望对你有帮助

    //如果找到了元素,做你想做的事

    if (driver.findElements(By.xpath("//*[@resource-id='com.app.android:id/prelogin_signup']")).size() > 0) {
                System.out.println("FOUND");
            } else {
                System.out.println("NOT FOUND!");
            }
    

    【讨论】:

      【解决方案2】:

      你可以用 try catch 块包围你的代码。

      public boolean isElementDisplayed(){
          try{
              return driver.findElement(By.xpath("//*[@resource-id='com.app.android:id/prelogin_signup']")).isDisplayed();
      
          }catch(Exception e){
              //System.out.println(e);
              return false;
          }
      }
      

      您也可以制作通用函数来检查元素是否显示。

      public boolean isElementDisplayed(MobileElement element){
          try{
              return element.isDisplayed();
      
          }catch(Exception e){
              //System.out.println(e);
              return false;
          }
      }
      

      【讨论】:

      • 您应该在示例中使用原始发布者的示例定位器。您还应该考虑,虽然应该有一个 try/catch 块,但您没有检查特定异常,因此任何异常都可能具有误导性并在某些情况下导致调试问题,特别是因为您的示例没有显示任何异常处理全部。
      猜你喜欢
      • 2021-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-08
      • 2022-01-10
      • 1970-01-01
      • 2018-06-21
      • 2019-10-05
      相关资源
      最近更新 更多