Appium hidekeyboard () метод - PullRequest
       12

Appium hidekeyboard () метод

0 голосов
/ 05 марта 2019

Я пытаюсь автоматизировать поле ввода почтового индекса, которое выскакивает цифровую клавиатуру для пользовательского ввода.Appium мог правильно ввести почтовый индекс, но, столкнувшись с проблемой при складывании клавиатуры, я заметил, что есть метод appium menthod driver.hidekeyboard()

Но, к сожалению, он дает ошибку при его использовании.

Ошибка веб-драйвера:

org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: [object Object]

Журнал сервера Appium:

debug] [JSONWP Proxy] Matched '/element/undefined/click' to command name 'click'
[debug] [JSONWP Proxy] Proxying [POST /element/undefined/click] to [POST http://localhost:8100/session/83293E4F-4B7A-462A-B5B1-1D729D54E36B/element/undefined/click] with body: {}
[debug] [XCUITest] Connection to WDA timed out
[debug] [iProxy] recv failed: Operation not permitted
[debug] [JSONWP Proxy] Got response with status 200: {"value":{},"sessionId":"83293E4F-4B7A-462A-B5B1-1D729D54E36B","status":13}
[JSONWP Proxy] Got an unexpected response: {"value":{},"sessionId":"83293E4F-4B7A-462A-B5B1-1D729D54E36B","status":13}
[debug] [MJSONWP] Matched JSONWP error code 13 to UnknownError
[debug] [XCUITest] Connection to WDA timed out
[debug] [iProxy] recv failed: Operation not permitted
[debug] [W3C (bac0efb8)] Encountered internal error running command: UnknownError: An unknown server-side error occurred while processing the command. Original error: [object Object]
[debug] [W3C (bac0efb8)]     at errorFromMJSONWPStatusCode (/usr/local/lib/node_modules/appium/node_modules/_appium-base-driver@3.14.0@appium-base-driver/lib/protocol/errors.js:789:10)
[debug] [W3C (bac0efb8)]     at ProxyRequestError.getActualError (/usr/local/lib/node_modules/appium/node_modules/_appium-base-driver@3.14.0@appium-base-driver/lib/protocol/errors.js:683:14)
[debug] [W3C (bac0efb8)]     at JWProxy.command (/usr/local/lib/node_modules/appium/node_modules/_appium-base-driver@3.14.0@appium-base-driver/lib/jsonwp-proxy/proxy.js:234:19)
[HTTP] <-- POST /wd/hub/session/bac0efb8-601a-4558-a50c-f909f2ccb25a/appium/device/hide_keyboard 500 1

Я также заметил, что есть метод переопределения для клавиатуры с параметрами: https://github.com/appium/java-client/blob/1991a8a0f9e4a3ff467dbb713cb5c51c8edc060f/src/main/java/io/appium/java_client/HidesKeyboardWithKeyName.java

driver.hideKeyboard(HideKeyboardStrategy.PRESS_KEY, "Done");

Но независимо от того, что яимпортировал необходимый класс, он по-прежнему говорит: «Метод hideKeyboard () в типе HidesKeyboard не применим для аргументов (String, String)» *

Кто-нибудь может помочь в решении любой из двух вышеуказанных проблем?

Большое спасибо!

Ответы [ 6 ]

0 голосов
/ 23 июля 2019

Если вы используете Android, вы можете использовать adb, чтобы скрыть клавиатуру, отправьте команду adb из вашего кода

adb shell input keyevent 111
0 голосов
/ 09 апреля 2019

Вы определяете возможности следующим образом.

desiredCapabilities.setCapability("unicodeKeyboard", true);
desiredCapabilities.setCapability("resetKeyboard", true);
0 голосов
/ 12 марта 2019

Проблема в том, чтобы попытаться спрятать клавиатуру в первую очередь.Установите для DesiredCapabilities значение

cap.setCapability("connectHardwareKeyboard", false);

. По умолчанию клавиатура будет скрыта.

Выполняйте операцию ввода данных с помощью sendKeys ()

appDriver.findElementByXPath("//XCUIElementTypeOther[@name=\"Confirm password\"]/XCUIElementTypeSecureTextField").sendKeys(confirmPassword);

после завершения вызова

appDriver.hideKeyboard();

и клавиатура исчезает.Надеюсь, это поможет

0 голосов
/ 12 марта 2019

Вы также можете просто использовать

driver.navigate (). Back (); (для более старой версии appium)

0 голосов
/ 05 марта 2019

Метод Appium hideKeyboard () имеет значение , которое известно как нестабильное при использовании на устройствах iPhone, как указано в известных на данный момент открытых проблемах Appium.Использование этого метода для устройства iOS может привести к зависанию скрипта Appium.Appium обнаруживает, что проблема заключается в том, что «нет никакой ловушки автоматизации для сокрытия клавиатуры ... вместо того, чтобы использовать этот метод, чтобы думать о том, как пользователь будет скрывать клавиатуру в вашем приложении, и сказать Appium сделать это вместо этого (проведите пальцем, коснитесь определенной координаты и т. д.) "

Обходной путь: следуя рекомендациям документации Appium - используйте Appium для автоматизации действий, которые пользователь будет использовать для скрытия клавиатуры.Например, используйте метод смахивания, чтобы скрыть клавиатуру, если приложение определяет это действие, или если приложение определяет кнопку «Hide-KB», автоматизируйте нажатие на эту кнопку.

Другой обходной путь - использовать sendkey () без нажатия на поле ввода текста.

0 голосов
/ 05 марта 2019

Известно, что метод Appium hideKeyboard () нестабилен при использовании на устройствах iPhone, как указано в известных в настоящее время открытых проблемах Appium.Использование этого метода для устройства iOS может привести к зависанию скрипта Appium.Appium обнаруживает, что проблема заключается в том, что «нет никакой ловушки автоматизации для сокрытия клавиатуры ... вместо того, чтобы использовать этот метод, чтобы думать о том, как пользователь будет скрывать клавиатуру в вашем приложении, и сказать Appium сделать это вместо этого (проведите пальцем, нажмите на определенную координату и т.д ..

Если вы хотите скрыть клавиатуру, вы можете написать функцию, как показано ниже

public void typeAndEnter(MobileElement mobileElement, String keyword) {
        LOGGER.info(String.format("Typing %s ...",keyword));
        mobileElement.sendKeys(keyword, Keys.ENTER);
    }

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...