2015-08-18 4 views
0

Я просто изучал UIAutomator для тестирования приложений Android и столкнулся с этой проблемой.Настройка текста в UIAutomator

Основано на API.

https://github.com/xiaocong/uiautomator#screen-actions-of-the-device

Я пытаюсь добавить новый контакт программно как часть моего исследования.

enter image description here

Я на эту страницу с помощью этого кода.

from uiautomator import device as d 
d.click(x,y) #used to click all the way to contacts. 

Как вставить текст в текстовое поле? Так как я не знаю образ класса, и примеров на github мало.

ответ

2

В качестве альтернативы, вы можете использовать culebra от AndroidViewClient/culebra автоматического создания сценария, который делает это через графический интерфейс.

Run

culebra -uG --scale=0.5 

, то вы можете нажать на EditText и введите значение

enter image description here

, которая отражается на устройстве

enter image description here

Wh Ile вы сделаете это, то скрипт автоматически генерируется

#! /usr/bin/env python 
# -*- coding: utf-8 -*- 
''' 
Copyright (C) 2013-2014 Diego Torres Milano 
Created on 2015-08-19 by Culebra v10.7.1 
         __ __ __ __ 
        /\/\/\/\ 
____________________/ __\/ __\/ __\/ __\_____________________________ 
___________________/ /__/ /__/ /__/ /________________________________ 
        |/\ /\ /\ /\ \___ 
        |/ \_/ \_/ \_/ \ o \ 
              \_____/--< 
@author: Diego Torres Milano 
@author: Jennifer E. Swofford (ascii art snake) 
''' 


import re 
import sys 
import os 


try: 
    sys.path.insert(0, os.path.join(os.environ['ANDROID_VIEW_CLIENT_HOME'], 'src')) 
except: 
    pass 

from com.dtmilano.android.viewclient import ViewClient 

TAG = 'CULEBRA' 

_s = 5 
_v = '--verbose' in sys.argv 


kwargs1 = {'ignoreversioncheck': False, 'verbose': False, 'ignoresecuredevice': False} 
device, serialno = ViewClient.connectToDeviceOrExit(**kwargs1) 
kwargs2 = {'forceviewserveruse': False, 'useuiautomatorhelper': False, 'ignoreuiautomatorkilled': True, 'autodump': False, 'startviewserver': True, 'compresseddump': True} 
vc = ViewClient(device, serialno, **kwargs2) 
#vc.dump(window='-1') # FIXME: seems not needed 

vc.dump(window=-1) 
vc.findViewWithTextOrRaise("u'Name'").type(u"My Contact") 
1

Согласно документу, он должен быть

d(text="Settings").set_text("My text...") # set the text 
+0

Но это указано, что имя текстового поля - это настройки? – aceminer

1

Используйте adb shell input text вместо этого.

Не забудьте импортировать

import os

os.system("adb shell input text "+ your_text)

0

Я надеюсь, что ваша разведка преуспевали и смешно :) я вижу, что вы нашли альтернативу, чтобы установить текст. Но есть простой способ сделать это, что-то похожее на ответ @Fang Wang, и я отвечу на это для будущих исследований об этом.

d(text="Name").set_text("My text...") 

Эта линия выше будет работать точно. Если вы хотите открытия свойства любого экрана на Android вам просто нужно использовать uiautomatorviewer, и вы получите что-то вроде этого:

enter image description here

Тогда вы будете иметь возможность проверить любой элемент экрана и открытие их детали.

С помощью этой информации мы можем создать наш код для взаимодействия с любым элементом Android.

В этом случае вам нужно использовать текст, заданный в поле, потому что класс атрибута одинаковый для всех полей.

Также вам не нужно будет нажимать на полях, если указать действие, которое вы хотите, и их имя или класс или RESOURCEID и т.д. ...

PS: UiAutomatorViewer устанавливается с Android Studio.

Смежные вопросы