Метод findElements (By) не применим для аргументов (MobileElement) - PullRequest
0 голосов
/ 15 января 2020
MobileElement followButton = (MobileElement) driver.findElement(By.xpath("//android.widget.ListView[@index='0']//android.widget.FrameLayout[@index='"+loopVal+"']//android.widget.LinearLayout[@index='0']//android.widget.FrameLayout[@index='2']//android.widget.TextView[@index='0']"));

    if(driver.findElements(followButton).isEmpty()) {

    //do something

    }

при findElements выдает ошибку: 1003 *

Метод findElements (By) не применим для аргументов (MobileElement)

поэтому я попытался реорганизовать этот метод в try-catch

try {

    MobileElement followButton = (MobileElement) driver.findElement(By.xpath("//android.widget.ListView[@index='0']//android.widget.FrameLayout[@index='"+loopVal+"']//android.widget.LinearLayout[@index='0']//android.widget.FrameLayout[@index='2']//android.widget.TextView[@index='0']"));

    } catch (org.openqa.selenium.NoSuchElementException e) {

        //do something

    }

, но теперь новая ошибка заключается в том, что при попытке .getText(); из followButton

String followOrNot = followButton.getText();

выдает ошибку, в которой говорится, что

followButton не может быть решен

В основном я пытаюсь найти followButton и запустить .getText(), но если followButton не найден, выполнить операцию по обработке ошибки

Может кто-нибудь помочь?

1 Ответ

1 голос
/ 15 января 2020

Вы можете попробовать это

List<AndroidElement> followButtons = driver.findElements(MobileBy.xpath("//android.widget.ListView[@index='0']//android.widget.FrameLayout[@index='"+loopVal+"']//android.widget.LinearLayout[@index='0']//android.widget.FrameLayout[@index='2']//android.widget.TextView[@index='0']"));


if(! followButtons.isEmpty()) {

    System.out.println(followButtons.get(0).getText()); // print text

    }

ИЛИ

Если у вас есть id или class name, вы также можете использовать приведенный ниже код

List<MobileElement> elementsOne = (List<MobileElement>) driver.findElementsByAccessibilityId("SomeAccessibilityID");
List<MobileElement> elementsTwo = (List<MobileElement>) driver.findElementsByClassName("SomeClassName");

Подробнее здесь

...