问题在于,Sikuli的图像识别功能仅在Sikuli测试的目标位于前台并且可以完全访问鼠标时才起作用。在当前配置下,Jenkins项目从Windows从属节点的桌面永远看不到。
现在,我当前的自动化测试套件的设置方式是,仅使用硒就可以编写约30个测试。在最后的两个测试中,selenium启动一个webdriver(当前是chromedriver,但可以是firefox或IE)并导航到正确的页面,Sikuli从那里开始。两者都使用Java语言绑定。
当前,Sikuli似乎已正确安装,但是当要求其单击通过将桌面与目标图像匹配而假定填充的screenRegions列表时,它将立即引发NPE。
我如何更改Windows 7从属设备上的Jenkins设置,以允许浏览器在前台启动,就像从Windows 7开发机运行它时那样?
因此,您拥有一台可以在Sikuli上运行的开发机器,以及一台Jenkins在其中运行Sikuli的测试机器,但它不起作用。
我有相同的设置(运行Windows 7的Sikuli测试器/ Jenkins从属)。对我有用的是让测试机运行VNC服务器,通过VNC作为测试者帐户登录,并将Jenkins从属设备作为常规应用程序而非服务启动。我使用了UltraVNC服务器。
据我所知,问题源于Windows的安全措施,旨在 防止 远程用户在您不在的情况下控制您的计算机。
如果您将Jenkins作为服务运行,则不会分配真正的桌面。该脚本将运行,但是(如您所见),Sikuli实际上将无法找到任何内容,因为没有内容可供查看。(Selenium正在以编程方式检查页面内容,因此不介意该页面 实际上 未显示在任何屏幕上。)
您也可以只运行Jenkins并保持登录状态,然后跳过VNC服务器。我想在没有显示器或键盘的情况下运行机器,但是仍然可以控制。如果这也是您的目标,则不能使用远程桌面,因为它会在连接时分配一个新的桌面,然后在断开连接时销毁它。(因此,詹金斯会在您观看时工作,而在您过夜时会失败。非常令人沮丧!)
作为附带的好处,如果您以此方式进行操作,则可以通过VNC连接并在Jenkins进行测试时观察它。