iOS UIAutomation:命令行Instruments使用-e设置环境变量。有没有办法在javascript的UIATarget中访问这些变量?

时间:2013-01-28 16:28:52

标签: ios ios-ui-automation

iOS UIAutomation - 命令行乐器使用-e设置环境变量。有没有办法在javascript的UIATarget中访问这些变量?

2 个答案:

答案 0 :(得分:0)

创建一个shell脚本,而不是使用环境变量的值生成一个JavaScript文件:

VAR1=100
...
VARN="something"
cat >> END
const Var1 = "$VAR1";
...
const VarN = "$VARN";
END > Env.js
...
# launch instruments here
instruments [...] -e VAR1 "$VAR1" ... -e VARN "$VARN"

在自动化脚本中导入生成的文件:

#import "Env.js"

/* Use `Var1`, ..., `VarN`. */

Env.js保存在自动化脚本目录中,它应该可以正常工作。 请注意,您可能需要转义变量以生成有效的JavaScript。

答案 1 :(得分:0)

基本上我想传递uiautomation javascript的变量。我没有将变量作为环境变量传递,而是从ini文件中读取它们,如下所示。

在配置文件中指定所需的参数。 python脚本读取这些参数并打印到stdout。 UiAutomation javascript读取stdout并解析变量

test.ini

[JSVARS]
server_url = http://foo.com
uname = user11
pwd = secret

的Python:

   import json, os;
   import ConfigParser;
   config = ConfigParser.ConfigParser()
   config.read('~/test/test.ini')
   for jsvar in config.items('JSVARS'):
      print jsvar[0]+":"+jsvar[1]+":"+jsvar[0]

使用Javascript:

var dlimiter = ":"
parseAllEnvironmentVariables()
{
    envvars = host.performTaskWithPathArgumentsTimeout("/usr/bin/python",["getEnvVars.py"], 5).stdout;
}

function getEnvironmentVariable(varname)
{
    return (new String(envvars).substring(envvars.indexOf(varname+dlimiter)+varname.length+dlimiter.length,envvars.indexOf(dlimiter+varname)));
}