在UIAutomator中设置文本

时间:2015-08-18 09:27:12

标签: python uiautomator

我正在探索UIAutomator for Android应用程序测试并遇到了这个问题。

基于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上没有很多例子。

4 个答案:

答案 0 :(得分:3)

根据文件,它应该是

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

答案 1 :(得分:2)

或者,您可以使用AndroidViewClient/culebra中的culebra自动生成通过GUI执行此操作的脚本。

运行

culebra -uG --scale=0.5

然后您可以触摸EditText并输入值

enter image description here

反映在设备上

enter image description here

执行此操作时,将自动生成脚本

#! /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")

答案 2 :(得分:1)

改为使用adb shell input text

别忘了导入

import os

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

答案 3 :(得分:1)

我希望你的探索做得好而且好笑:) 我看到你找到了另一种设置文本的方法。但是有一种简单的方法可以做到这一点,类似于@Fang Wang的答案,我将在未来的研究中回答这个问题。

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

以上这一行肯定会有用。如果你想在Android上发现任何屏幕的属性,你只需要使用uiautomatorviewer,你会得到类似的东西:

enter image description here

然后,您将能够检查任何屏幕元素并发现它们的详细信息。

通过这些信息,我们可以创建代码以与任何Android元素进行交互。

在这种情况下,您需要使用字段上的文本集,因为所有字段的属性类都相同。

如果您指定所需的操作及其名称或类或resourceId等,您也无需单击字段...

PS:UiAutomatorViewer随Android Studio一起安装。