Получение текстового поля Appium для iOS

Я пытаюсь получить доступ к текстовому полю страницы входа в мое приложение в тестовом примере appium. В настоящее время я использую «Идентификатор восстановления» для идентификации текстового поля и использования его в качестве уникального идентификатора.

В настоящее время appium не может найти текстовое поле через «Идентификатор восстановления» и выдает ошибку

info: [debug] Socket data received (25 bytes)
info: [debug] Socket data being routed.
info: [debug] Got result from instruments: {"status":0,"value":""}
info: [debug] Id selector, 'com.myapps.myappDummyName:id\/loginButton', not found in Localizable.strings.
info: [debug] Pushing command to appium work queue: "au.getElementById('com.myapps.myappDummyName:id\\/loginButton')"
info: [debug] Sending command to instruments: au.getElementById('com.myapps.myappDummyName:id\/loginButton')
info: [debug] [INST] 2016-05-17 12:54:11 +0000 Debug: Got new command 68 from instruments: au.getElementById('com.myapps.myappDummyName:id\/loginButton')
info: [debug] [INST] 2016-05-17 12:54:11 +0000 Debug: evaluating au.getElementById('com.myapps.myappDummyName:id\/loginButton')
info: [debug] [INST] 2016-05-17 12:54:11 +0000 Debug: evaluation finished
info: [debug] [INST] 2016-05-17 12:54:11 +0000 Debug: responding with:
info: [debug] [INST] 2016-05-17 12:54:11 +0000 Debug: Running system command #69: /usr/local/Cellar/node/5.6.0/bin/node /Users/Harry/appium/node_modules/appium-uiauto/bin/command-proxy-client.js /tmp/instruments_sock 2,{"status":0,"value":""}...
info: [debug] Socket data received (25 bytes)
info: [debug] Socket data being routed.
info: [debug] Got result from instruments: {"status":0,"value":""}
info: [debug] Condition unmet after 6942ms. Timing out.
info: [debug] Responding to client with error: {"status":7,"value":{"message":"An element could not be located on the page using the given search parameters.","origValue":""},"sessionId":"345b24b8-82da-31da-85c1-45ae33325c15"}

Может ли кто-нибудь сказать, как я могу получить текстовое поле, используя метод findElementById() и передав ему уникальный идентификатор. Как я могу получить этот идентификатор из UITextField в раскадровке и где указать этот идентификатор в раскадровке.


person Abuzar Amin    schedule 17.05.2016    source источник
comment
какой код вы использовали для доступа к тому же? пожалуйста, добавьте это тоже к вопросу   -  person Naman    schedule 17.05.2016


Ответы (1)


WebElement textField = driver.findElement(By.id("<resource-id of element>"));

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

К тому, что я могу прочитать из журналов:

информация: [отладка] Селектор идентификатора, «com.myapps.myappDummyName:id/loginButton», не найден в Localizable.strings.

Вероятно, вы используете неправильную строку id для доступа к элементу.

Кроме того, я надеюсь, что вы не сталкиваетесь с этим: IOS Storyboards: идентификатор восстановления просто как идентификатор раскадровки?

person Naman    schedule 17.05.2016
comment
Что такое идентификатор ресурса любого представления, как я могу получить его из раскадровки? - person Abuzar Amin; 17.05.2016
comment
@AbuzarAmin: попробуйте получить его, используя UIAutomator или Appium Inspector - person Naman; 17.05.2016
comment
@AbuzarAmin: если все в порядке, вы должны добавить textField.getText(); , а затем распечатать его;) - person Emna Ayadi; 17.05.2016