我想知道如何在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”但没有用。请建议
答案 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();
}