有兄弟团队用jenkins做任务调度,对Windows上的应用通过Sikuli测试,发现Sikuli的 App.Open 无法加载应用,问我是啥原因。
对于Jenkins和Sikuli,我都是新手,通过网上的各种查找,终于找到原因和解决方案。
问题的原因挺简单的。这是Windows的一个安全机制导致。Jenkins把Windows作为一个node,部署了一个windows service在里面。平时,如果跑跑没有UI的调度还可以,当有UI交互出现时,Service跑在session 0,问题就来了。
解决方法有两个,
1. 比较笨拙的方法,那就是用psexec来解决,具体可以参见 http://stackoverflow.com/questions/22602951/open-excel-on-jenkins-ci/22610664#22610664
2. 另一种推荐的方法,就是不要让Jenkins作为一个service,而是作为Java web start,通过java -jar Jenkins.jar在windows上启动,就OK了。
另,网上说,只要在Service的属性里面标识允许与桌面互动,实际操作不现实,因为每当调度的时候,会跳出一个对话框,让当前用户授权,无法完全自动化。