2015-04-01 151 views
3

我想知道我们可以在我们的应用程序中使用UIAutomator吗? 我想编写一个打开另一个应用程序的应用程序,在该应用程序的EditText中编写一些文本,然后按下一些按钮(如打开环聊,并在其上写入文本并发送消息)。 你能建议我怎么做?我们可以在android应用程序中使用UIAutomator吗?

我有搜索网,我只能找出我可以用UIAutomator测试我的UI,但我不知道我可以用它来写一个Android应用程序(而不是jar文件)并在我的android设备上运行它去做这个。

+0

你有没有使用'UIAutomator'?这是一个在本地机器上自动测试的本地工具。你可以做的最好的事情是通过意图发送数据。 – 2015-04-01 22:40:41

+0

@JaredBurrows我可以使用intents进行任何应用程序吗?我的意思是我可以使用它来访问其他人使用它的应用程序吗? (如viber) – 2015-04-02 06:35:04

+0

viber是否接受意图?这是另一个问题。谷歌,如果Viber有api。 – 2015-04-02 13:27:49

回答

3

这是不可能的。

UiAutomator 2.0依赖于Instrumentation,仅当您使用am instrument ...运行测试时才可用。常规(非测试)应用程序无权访问Instrumentation。

基于Shell的UiAutomator与此类似。您使用adb shell uiautomator runtest ...执行测试,并且UiAutomatorTestRunner利用它作为shell用户运行来处理普通应用程序无权执行的操作。

如果使用Runtime#exec(..)打电话或者am instrumentuiautomator runtest,该命令将无法运行作为外壳用户(它会使用你的应用程序的UID),因为它不具备必要的权限将失败。

+0

谢谢,无论如何在没有意图的情况下在其他程序中执行一些操作? ..像检查1号码有没有Viber账户或不通过在我们的应用程序中输入他的号码? – 2015-04-02 19:48:36

+1

不是。应用程序彼此独立运行,与其他应用程序交互的唯一方法是通过它公开的接口。如果该应用没有公开界面供您使用,那么您运气不好。 – 2015-04-02 21:50:15

+0

可以使用shell权限或shell UID运行应用程序吗?我们可以在Manifest注册一些权限来做到这一点吗?我正在尝试在根设备上执行相同的操作,因此,是否可以通过注册一些权限来执行相同的操作? – Ambi 2016-08-05 05:18:49

相关问题