t.me/atinfo_chat Telegram группа по автоматизации тестирования

Не вводится текст в текстовую форму на мобильном приложении

На мобильном приложении не могу ввести текст. Со всеми предыдущими полями все работает.


Вот так ввожу текст:
MobileElement sendText = (MobileElement)
driver.findElement(By.xpath("//android.widget.EditText[contains(@resource-id,‘send_text_field’)]"));
sleep(500);
sendText.sendKeys("Тесовое объявление ");
sleep(500);

Так як текст "Тесовое объявление "потрібно ввести кирилицею, скоріш за все треба заюзати клавіатуру апіума.
Попробуйте додати:
capabilities.setCapability(“unicodeKeyboard”, “true”);
Так як вона замінить стандартну клавіатуру, використовуйте також:
capabilities.setCapability(“resetKeyboard”, “true”);

Плюс гляньте до локатора, можливо такий підійде
By.xpath("//android.widget.EditText[@resource-id=‘XXXXXX:id/send_text_field’]")

дуже дякую, я чомусь не подумала про клавіатуру апіума, зараз спробую. xpath в першу чергу спробула: не в тому річ

Это нативный андроид виджет, с ними UI Automator толком работать не умеет,
Он не может их распарсить и просто маркирует как NAF (“Not Accessibility Friendly”)
Сразу обращайте внимание на “NAF: true” в описании ноды. :slight_smile: бывают сюрпризы…

С клавиатурой лучше не связывайтесь:) Она имеет свойство прятать элементы.

Если подключить Selenide, например, то текст можно ввести куда проще:


SelenideElement element;
String APP_ID;

APP_ID = "то что у вас на скрине заштриховано:id/";
element = $(By.id(APP_ID + "send_text_field"));

$(element).sendKeys("ваш текст");
1 Симпатия

Не пугайте людей, все не так страшно. как вы описываете:
NAF

Это стандартный нативный TextField, и UIAutomator не может не уметь с ним работать по определению.

1 Симпатия

Да, действительно) Сценарий самый банальный.

С виджетом - ошибся. По инерции:)
Недавно намучался с UI элементами типа android.support.v7.app.ActionBar$Tab - комментарий больше к ним относится.

NAF- очень разные бывают. Как правило - ничего страшного, но в порядке исключения в некоторых случаях приходится повозиться.