Appium SendKeys для WPF использует другую раскладку клавиатуры - PullRequest
0 голосов
/ 31 марта 2020

выпуск В моем текущем проекте я реализую несколько простых автоматизированных тестов для приложения видеовызова, которое работает на Android, iOS (с Unity) и Windows (WPF). Для создания этих автоматических тестов я решил использовать Appium по нескольким причинам. Наиболее важным было то, что существует инфраструктура, которая позволяет легко автоматизировать приложения Unity [1] . Во время входа в систему системный браузер по умолчанию будет встроен в текущий вид приложения. Пользователь должен ввести свой адрес электронной почты и свой пароль. Это тот момент, когда я борюсь. Я пытаюсь отправить следующую строку:

String eMail = "system-administrator@e-mail.de"

Но appium вводит следующий текст в текстовое поле встроенного браузера в клиенте WPF:

szstemßadministrator@eßmail.de

(Это потому, что немецкая клавиатура настроена по умолчанию в настройках системы. Результат будет другим, если макет по умолчанию будет другим) Я понял, что драйвер. NET для Appium был разработан для клавиатур США [2] . Поэтому я подумал, что это будет лучший способ отправить символы Юникода [3] . Кроме того, я попытался нормализовать String, который я люблю отправлять раньше, используя java.text.Normalizer [4] . Но даже если я установлю рекомендуемые желаемые возможности [5] [6] , это не повлияет на результат, описанный выше. Похоже, что пока нет решения для WPF [7-11]. На данный момент я реализовал метод замены символов, который получается из немецкого макета, на эквивалент клавиатуры США (то есть 'z' -> 'y', 'z' -> 'y' или '-' -> '/'), используя StringBuilder#replace. Но это неправильно и очень зависит от системы. Другим обходным решением будет настройка сочетаний клавиш в системе и переключение раскладки клавиатуры во время теста, а затем переключение обратно [12] . Но это тоже неправильно, потому что тест не должен полагаться на системные настройки или изменять их. Возможно, моего исследования было недостаточно, и есть способ заставить Appium отправить String, как показано в коде. вопрос: Каким способом лучше всего решить описанную выше проблему?

  1. Реализовать метод, который заменяет символы при необходимости?
  2. Создать и использовать ярлыки для переключения клавиатура системы, при необходимости?
  3. еще одна?
источники [1] Java Распознавание изображений [2] Appium: выпуск № 380 [3] Преобразование строки в Unicode [4] Appium: многоязычная поддержка [5] Функция Appium Send keys (), отправляющая китайские символы как часть строк Engli sh [6] Appium: требуемые возможности [7] Принудительная раскладка клавиатуры для метода отправки ключей Selenium2 [8] преобразовать в символ ("@") в CharSequence [9] Как отправить "специальные символы" с помощью Python Действия Send_keys? [10] Appium: выпуск № 215 [11] Appium: выпуск № 507 [12] Appium: обходной путь к клавиатуре WPF
...