Как использовать команду .click () в блоке try-catch Java android - PullRequest
0 голосов
/ 20 мая 2019

Я пытаюсь щелкнуть элемент в приложении android после перехвата nosuchelementexception методом try-catch, используя этот код здесь

    try {

        driver.findElement(By.xpath("//android.widget.ImageButton[@index='0']")).click();
    Thread.sleep(2500);
    }

    catch(org.openqa.selenium.NoSuchElementException e1) {
        Thread.sleep(45000);

        driver.findElement(By.id(com.offerup:id/dialog_pos_button)).click();


    }

}

но на driver.findElement(By.id(com.offerup:id/dialog_pos_button)).click();

говорит, что com.offerup нельзя разрешить в тип, а dialog_pos_button нельзя разрешить в переменную

Кто-нибудь знает, как это обойти?

вот мои желаемые возможности

File OfferUp = new File("C:\\Users\\boung\\Desktop\\com.offerup.apk");
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability("deviceName", "Virtual Device");
cap.setCapability("platformName", "android");
cap.setCapability("null", "OfferUp");
cap.setCapability("appPackage", "com.offerup");
cap.setCapability("appActivity",
"com.offerup.android.activities.SearchActivity");

Ответы [ 2 ]

1 голос
/ 21 мая 2019

В Appium нет никакой нулевой возможности. Вам необходимо предоставить возможность предоставить приложение, если оно не установлено на вашем устройстве.

enter image description here

Изменить cap.setCapability ("null", "OfferUp"); на

cap.setCapability("app", /path/to/.apk/file);

Если вы предоставляете приложение в DesiredCapability, вам не нужно предоставлять возможность appPackage и appActivity.

Использование Thread.sleep () не рекомендуется. Используйте ExplicitWait () метод.

Почему вы хотите нажать кнопку в методе catch? Что, если из блока catch выдается ошибка? Вы должны изменить свою логику для этого. Сначала проверьте, является ли элемент Visible, используя метод .isDisplayed () . Затем, если элемент присутствует, щелкните элемент.

0 голосов
/ 22 мая 2019

Попробуйте следующее: -

File filePath = new File (System.getProperty ("user.dir")); Файл appDir = новый файл (filePath, "/ app"); Файл app = новый файл (appDir, "com.offerup.apk"); DesiredCapabilities cap = new DesiredCapabilities (); cap.setCapability ( "приложение", app.getAbsolutePath ()); cap.setCapability ("имя_устройства", "Виртуальный Device "); cap.setCapability (" platformName "," android "); driver = new AndroidDriver (новый URL ("http://0.0.0.0:4723/wd/hub"), cap);

или попробуйте использовать другой локатор для идентификации конкретного элемента

...