在 UIAutomator 中设置文本
Setting text in UIAutomator
我只是在探索用于 Android 应用程序测试的 UIAutomator 并遇到了这个问题。
基于 API。
https://github.com/xiaocong/uiautomator#screen-actions-of-the-device
作为探索的一部分,我正在尝试以编程方式添加新联系人。
我使用此代码到达此页面。
from uiautomator import device as d
d.click(x,y) #used to click all the way to contacts.
如何在名称文本框中插入文本?由于我不知道 class 图像并且 github 上的示例也不多。
根据文档,应该是
d(text="Settings").set_text("My text...") # set the text
或者,您可以使用 AndroidViewClient/culebra 中的 culebra
来自动生成通过 GUI 执行此操作的脚本。
运行
culebra -uG --scale=0.5
然后您可以触摸 EditText
并输入值
反映在设备上
执行此操作时,脚本会自动生成
#! /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")
改用adb shell input text
。
别忘了导入
import os
os.system("adb shell input text "+ your_text)
希望您的探索进展顺利且有趣 :)
我看到您找到了设置文本的替代方法。但是有一个简单的方法可以做到这一点,类似于@Fang Wang 的回答,我会回答这个问题以备将来研究。
d(text="Name").set_text("My text...")
上面这一行肯定有效。如果你想在 Android 上发现任何屏幕的属性,你只需要使用 uiautomatorviewer
你会得到类似的东西:
然后您将能够检查任何屏幕元素并发现它们的详细信息。
利用这些信息,我们可以创建代码来与任何 Android 元素进行交互。
在这种情况下,您需要使用在字段上设置的文本,因为属性 class 对于所有字段都是相同的。
此外,如果您指定了所需的操作及其名称或 class 或 resourceId 等,则无需单击字段...
PS:UiAutomatorViewer 与 Android Studio 一起安装。
我只是在探索用于 Android 应用程序测试的 UIAutomator 并遇到了这个问题。
基于 API。
https://github.com/xiaocong/uiautomator#screen-actions-of-the-device
作为探索的一部分,我正在尝试以编程方式添加新联系人。
我使用此代码到达此页面。
from uiautomator import device as d
d.click(x,y) #used to click all the way to contacts.
如何在名称文本框中插入文本?由于我不知道 class 图像并且 github 上的示例也不多。
根据文档,应该是
d(text="Settings").set_text("My text...") # set the text
或者,您可以使用 AndroidViewClient/culebra 中的 culebra
来自动生成通过 GUI 执行此操作的脚本。
运行
culebra -uG --scale=0.5
然后您可以触摸 EditText
并输入值
反映在设备上
执行此操作时,脚本会自动生成
#! /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")
改用adb shell input text
。
别忘了导入
import os
os.system("adb shell input text "+ your_text)
希望您的探索进展顺利且有趣 :) 我看到您找到了设置文本的替代方法。但是有一个简单的方法可以做到这一点,类似于@Fang Wang 的回答,我会回答这个问题以备将来研究。
d(text="Name").set_text("My text...")
上面这一行肯定有效。如果你想在 Android 上发现任何屏幕的属性,你只需要使用 uiautomatorviewer
你会得到类似的东西:
然后您将能够检查任何屏幕元素并发现它们的详细信息。
利用这些信息,我们可以创建代码来与任何 Android 元素进行交互。
在这种情况下,您需要使用在字段上设置的文本,因为属性 class 对于所有字段都是相同的。
此外,如果您指定了所需的操作及其名称或 class 或 resourceId 等,则无需单击字段...
PS:UiAutomatorViewer 与 Android Studio 一起安装。