Как я могу получить статус флажка

Я пытаюсь получить статус флажка с помощью androidviewclient

lock = vc.findViewWithText('Lock SIM card')
if (lock.isChecked()):
    print "Enabled"
else:
    print "Disabled"

это всегда возвращает False .

кто-нибудь может сказать мне, как получить статус флажка


person user    schedule 22.10.2013    source источник
comment
можете ли вы напечатать lock.isChecked()   -  person KOTIOS    schedule 22.10.2013
comment
Он всегда печатает False   -  person user    schedule 22.10.2013


Ответы (2)


Это потому, что замок - это не шкатулка. Блокировка — это текстовое представление, содержащее «Блокировка SIM-карты». Вам нужно использовать иерархию просмотра или uiautomatorviewer, чтобы увидеть макет пользовательского интерфейса.

Пользовательский интерфейс выглядит примерно так:

(0) Linear layout
    (1) Relative layout
        (0) TextView "Lock SIM card"
        (1) TextView "Require PIN to use phone"
    (2) Linear layout
        (0) CheckBox

Итак, вам нужно сделать что-то вроде:

linear_layout = lock.parent.parent
check_box = linear_layout.children[2].children[0]

Это не просто, но я использовал это в прошлом и работал. Обратите внимание, что я использовал версию ViewClient 2.3. Теперь он развился до 4+.

person Gabriel Porumb    schedule 22.10.2013
comment
Я уже говорил о необходимых изменениях. Это прямо под вам нужно сделать что-то вроде . - person Gabriel Porumb; 23.10.2013
comment
когда я сделал, как вы предложили, я вижу следующую ошибку: check_box = linear_layout.children () [2]. Children () [0] TypeError: объект «список» не вызывается - person user; 23.10.2013
comment
Я отредактировал ответ. Вам нужно удалить () из детей (). - person Gabriel Porumb; 23.10.2013
comment
Теперь я вижу эту ошибку: check_box = linear_layout.children[2].children[0] IndexError: индекс списка вне допустимого диапазона - person user; 23.10.2013
comment
Привет, похоже на флажок, как я могу получить статус переключателя. Я попытался увидеть макет пользовательского интерфейса с помощью иерархического просмотра, он выглядит примерно так: (0) Линейный макет (1) Линейный макет (0) CheckedTextView All Calls (1) CheckedTextView При роуминге Но я ничего не вижу для переключателя в расположение . Пожалуйста помоги . - person user; 05.11.2013
comment
Не могли бы Вы уточнить? В какое окно ты смотришь? Какой вариант меню. Мне нужно больше деталей, чтобы понять, где искать. - person Gabriel Porumb; 05.11.2013
comment
Вот навигация для окна, на которое я смотрю: Телефон> Настройки> Настройки вызовов GSM> Запрет вызовов> Запрет входящих> Все вызовы -----> это пункт меню, в котором есть кнопка «Радио», для которой я должен проверьте, включена ли эта опция. - person user; 06.11.2013
comment
У меня нет такого пункта меню, но я воспользовался эмулятором и зашел в Настройки -> Еще -> Мобильные сети -> Имена точек доступа и там был переключатель. Используя программу просмотра uiautomator, я обнаружил элемент пользовательского интерфейса RadioButton. Просто разверните все дерево макетов и найдите конкретный элемент. - person Gabriel Porumb; 06.11.2013

Это может сработать:

 vc.dump()
 lock = vc.findViewWithText('Lock SIM card').getParent().getChildren()                                                                                                                                                   [2].getChecked()
    if lock != True:
       print 'Lock SIM card not enabled...'
       vc.dump()
       vc.findViewWithText('Lock SIM card').touch()
    else:
       print 'Lock SIM card already enabled...'
person Arun Sai    schedule 11.07.2016