我正在尝试通过命令行向 UI 自动化脚本发送一些参数,其中脚本可以获取这些参数并根据这些接收到的参数有条件地执行一些特定的测试用例。有没有办法做到这一点?我在instruments 命令的手册页中看到它提到了一些关于参数的内容。
参数 ~ 要发送到启动进程的命令行参数(您可以指定多个)
...或者我应该只是将条件代码拆分为不同的文件,并有一些外部 shell 脚本来处理要通过仪器命令行执行的文件名的更改?
我正在尝试通过命令行向 UI 自动化脚本发送一些参数,其中脚本可以获取这些参数并根据这些接收到的参数有条件地执行一些特定的测试用例。有没有办法做到这一点?我在instruments 命令的手册页中看到它提到了一些关于参数的内容。
参数 ~ 要发送到启动进程的命令行参数(您可以指定多个)
...或者我应该只是将条件代码拆分为不同的文件,并有一些外部 shell 脚本来处理要通过仪器命令行执行的文件名的更改?
我对这个问题的解决方法是使用导出的环境变量和UIATarget.localTarget().host().performTaskWithPathArgumentsTimeout(...)
获取该参数的命令。
在 shell 中导出环境变量
export PARAM_TO_UIA="theParameterValue"
从同一个外壳启动仪器
在 UIAutomation 脚本中获取参数
var result = target.host().performTaskWithPathArgumentsTimeout("/usr/bin/printenv" , ["PARAM_TO_UIA"], 5);
var parameter = result.stdout.substring(0,result.stdout.length-1);
最后一个命令从result.stdout
字符串末尾删除 '\n'。
唉,不是这个时候。命令行参数被发送到应用程序本身(这是启动的进程),但自动化脚本无法访问任何命令行参数甚至环境变量。请就此向 Apple提交错误报告。他们听到的越多,他们的优先级列表就会越高。
您建议让 shell 脚本执行不同的自动化脚本是我所做的,并且效果很好。
我的解决方法:
我有一个 shell 脚本将变量附加到第二个 JavaScript 文件。然后可以将该文件导入用于仪器的原始 JavaScript 文件中。在这种情况下,您可以在 JavaScript 文件中使用任何外部变量来指示移动应用程序。
我的脚本示例如下: https ://github.com/jeroen1985/iOS-screenshots-automation-Bash
如果您有任何问题,请告诉我。
谢谢,
杰伦