7

问题在于,Sikuli 的图像识别功能仅在 Sikuli 测试的目标位于前台并且可以完全访问鼠标时才起作用。在其当前配置中,Jenkins 项目永远不会从 Windows 从节点的桌面上看到。

我目前的自动化测试套件的设置方式是,大约 30 个测试仅使用 selenium 编写。在最后的两个测试中,selenium 启动了一个 webdriver(目前是 chromedriver,但可以是 firefox 或 IE)并导航到正确的页面,Sikuli 从那里开始做它的事情。两者都使用 java 语言绑定。

目前,Sikuli 似乎已正确安装,但当它被要求单击通过将桌面与目标图像匹配而填充的 screenRegions 列表时,它会立即抛出 NPE。

如何更改我的 Windows 7 从站上的 Jenkins 设置以允许在前台启动浏览器,就像我从我的 Windows 7 开发机器运行它时一样?

4

2 回答 2

7

所以你有一台开发机器供 Sikuli 工作,还有一台测试机器供 Jenkins 运行 Sikuli 但它不工作。

我有同样的设置(使用运行 Windows 7 的 Sikuli 测试器/Jenkins 从站)。对我有用的是让测试机器运行 VNC 服务器,通过 VNC 以测试人员帐户身份登录,然后将 Jenkins 从站作为常规应用程序而不是服务启动。我使用了 UltraVNC 服务器

据我所知,问题源于 Windows 的安全措施,该措施旨在防止远程用户在您不在场的情况下控制您的机器。

如果您将 Jenkins 作为服务运行,它不会获得分配给它的真实桌面。该脚本将运行,但(如您所见)Sikuli 实际上无法找到任何东西,因为它没有任何东西可供查看。(Selenium 正在以编程方式检查页面内容,因此它并不介意该页面实际上并未显示在任何屏幕上。)

您也可以只运行 Jenkins 并让自己保持登录状态,然后跳过 VNC 服务器。不过,我想在没有显示器或键盘的情况下运行机器并且仍然可以控制。如果这也是您的目标,则不能使用远程桌面,因为它会在连接时分配一个新桌面,然后在您断开连接时将其销毁。(所以詹金斯会在你看的时候工作,而当你晚上离开时会失败。非常令人沮丧!)

作为一个附带的好处,如果你这样做,你可以通过 VNC 连接并观察 Jenkins,因为它正在运行测试。

于 2013-06-26T16:00:01.377 回答
1
  1. 使从机远程桌面到自己。
  2. 在该会话中将 jenkins salve 作为程序运行 cmd /c start java -jar slave.jar -jnlpUrl http....slave-agent.jnlp -secret ...(在您的 jenkins master 中找到它(显示从服务为下)
  3. 将其全部设置为在salve win启动时运行。
于 2013-12-04T15:34:53.770 回答