如何在Android UIAutomator -e命令行参数中发送带空格的文本

时间:2014-03-28 10:03:12

标签: android command-line-arguments command-prompt uiautomator

我想知道如何在Android UIAutomator -e选项(名称 - 值对)中发送带空格的文本

对于Ex:

adb shell uiautomator runtest LaunchSettings.jar -c com.uia.example.my.LaunchSettings

我想像

一样发送

adb shell uiautomator runtest LaunchSettings.jar -c com.uia.example.my.LaunchSettings -e appName Temple Run

但收到错误消息:

不支持的独立参数。

尝试像“Temple Run”或“Temple Run”但没有用。

请建议

1 个答案:

答案 0 :(得分:3)

    String defaultAppName = "My super App";

    String toAppName = getParams().getString("appName"); //pass app name with 'appName' key

    if (toAppName != null) {
        toAppName = toAppName.replace("0"," "); //use 0 instead of space in app name
        defaultAppName=toAppName.trim();
    }

如果在运行此测试时未传递-e选项(名称 - 值对),则上述代码将默认为“我的超级应用程序”。

要传递带空格的参数,比如'my super dooper app',根据上面的代码,需要为每个空格插入0。

要将'my super dooper app'作为上述代码的参数传递,需要发送使用:

-e appName "my0super0dooper0app"

在你的情况下:

 adb shell uiautomator runtest LaunchSettings.jar -c com.uia.example.my.LaunchSettings -e appName Temple0Run

(而不是'0',您可以插入任何字母数字字符作为占位符,如下例所示)

UiAutomator无法理解带空格的命令行参数,&,<,> ,(,),“,”,以及一些Unicode字符。在这种情况下,必须使用所需的符号替换命令行中的占位符。

示例:

if (toParam != null) {
        toParam = toParam.replace("0space0", " "); //insert 0space0 in command line parameters for every space
        toParam = toParam.replace("0amper0", "&"); //insert 0amper0 in command line parameters for every &
        toParam = toParam.replace("0less0", "<"); //insert 0less0 in command line parameters for every <
        toParam = toParam.replace("0more0", ">"); //insert 0more0 in command line parameters for every >
        toParam = toParam.replace("0openbkt0", "("); //insert 0openbkt0 in command line parameters for every (
        toParam = toParam.replace("0closebkt0", ")"); //insert 0closebkt0 in command line parameters for every )
        toParam = toParam.replace("0onequote0", "'"); //insert 0onequote0 in command line parameters for every '
        toNumber = toParam.trim();
    }