Невозможно нажать кнопку, которая не активирована с помощью приложения Appium Java для Android - PullRequest
0 голосов
/ 06 июня 2018

Я должен создать перевод.Когда я запускаю скрипт, кнопка «Передача», для которой «включено», ложна, поэтому скрипт не может нажать кнопку «Перенос» и не работает.Я приложил снимок экрана дампа просмотра uiautomator. enter image description here

Обходной путь, который я нашел, состоит в том, чтобы вручную щелкнуть поле редактирования суммы, а затем активировать экранную клавиатуру Android иввод значения вручную в поле «сумма», а затем кнопка «Перевод» стала активной и может быть нажата.Но я не уверен, как ввести значение в поле ввода с экранной клавиатуры Android, а затем избавиться от этой клавиатуры, чтобы ввести дату и нажать кнопку «Перенести».enter image description here

Ваша помощь очень ценится.Спасибо.

Ответы [ 3 ]

0 голосов
/ 06 июня 2018

Привет, вы можете скрыть программную клавиатуру, используя следующий фрагмент кода.Это работает для меня.

public void someMethod(){
driver.getKeyboard();
        try {
            if (checkSoftKeyboard())
                driver.hideKeyboard();
        } catch (IOException e) {
            e.printStackTrace();
        }
}

public boolean checkSoftKeyboard() throws IOException {
        boolean isKeyboardPresent = false;
        Process p = Runtime.getRuntime().exec("adb shell dumpsys input_method | grep mInputShown");
        BufferedReader   in = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String outputText = "";

        while ((outputText = in.readLine()) != null) {

            if(!outputText.trim().equals("")){
                String keyboardProperties[]=outputText.split(" ");
                String keyValue[]=keyboardProperties[keyboardProperties.length-1].split("=");

                String softkeyboardpresenseValue=keyValue[keyValue.length-1];
                if(softkeyboardpresenseValue.equalsIgnoreCase("false")){
                    isKeyboardPresent=false;
                }else{
                    isKeyboardPresent=true;
                }
            }
        }
        in.close();
        return isKeyboardPresent;
    }

Метод checkSoftKeyboard проверит, есть ли уже программная клавиатура или нет?Если он там, он просто скроет программную клавиатуру.И тогда вы сможете увидеть кнопку Transfer .

надеюсь, что это работает для вас.Спасибо!

0 голосов
/ 13 июня 2018

Я могу решить эту проблему.Мой подход заключается в том, чтобы сначала щелкнуть по полю «Сумма», а затем ввести sendkeys значение суммы.Подробнее см. Ниже код: -

    //locating the amount field using xpath
    MobileElement amount = driver.findElement(By.xpath("//android.widget.EditText[@resource-id='com.abc.rbanking:id/workflow_step_amount_value']"));

    amount.click();

    amount.sendKeys("1.25");
   //clicking and sendkeys would enable the disabled 'Transfer' button

   //locating the 'Date' field and click it. Clicking it would get rid of soft android keyboard
    driver.findElement(By.xpath("//*[@text = 'Date']")).click();

    Thread.sleep(3000);

    driver.findElement(By.id("com.abc.rbanking:id/back_button")).click();

    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

    driver.findElement(By.xpath("//android.widget.Button[@resource-id='com.abc.rbanking:id/PrimaryButton' and @text='Transfer']")).click();
0 голосов
/ 06 июня 2018

Сначала установите следующие возможности:

capabilities.setCapability("unicodeKeyboard", true);
capabilities.setCapability("resetKeyboard", true);

, второй попытайтесь скрыть клавиатуру следующим образом:

driver.hideKeyboard(); // doesn't work on newer versions of appium

или попробуйте это:

driver.pressKeyCode(AndroidKeyCode.BACK);  //this also doesn't work on all devices but give it a try

Для датыконтроль Я не совсем уверен, какой элемент управления Вы используете средство выбора даты или какой-либо другой пользовательский элемент управления датой, но при каждом действии пытайтесь скрыть клавиатуру.

...