выпуск В моем текущем проекте я реализую несколько простых автоматизированных тестов для приложения видеовызова, которое работает на 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]
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