Appium проверяет, отображается ли элемент

Я использую Appium для Android

следующие работы для нажатия на элемент

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

Как я могу проверить, есть ли элемент на экране?


person david    schedule 07.11.2018    source источник


Ответы (2)


Вы можете попробовать это, надеюсь, это поможет

//Если элемент найден, делайте как хотите

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!");
        }
person Al Imran    schedule 08.11.2018

вы можете окружить свой код блоком 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;
    }
}
person Suban Dhyako    schedule 07.11.2018
comment
В своем примере вы должны использовать локатор исходного постера. Вы также должны учитывать, что, хотя должен быть блок try/catch, вы не проверяете конкретные исключения, поэтому любое исключение может вводить в заблуждение и при определенных обстоятельствах вызывать проблемы отладки, тем более что ваш пример не показывает никакой обработки исключений в все. - person Bill Hileman; 07.11.2018