【问题标题】:Sikuli cannot find image on screen through JenkinsSikuli 无法通过 Jenkins 在屏幕上找到图像
【发布时间】:2020-03-05 11:52:41
【问题描述】:

我有一个 Maven 项目设置来运行我的 JUnit 测试。我正在使用 Sikuli 单击屏幕上的某些图像。在终端中使用“mvn test”命令或通过 Eclipse 执行我的测试时,它将起作用。

我现在必须将这些测试集成到 Jenkins 中,我认为这很简单;然而,这种情况并非如此。在 Jenkins 中创建作业后,我执行了“mvn test”命令来运行我的测试,maven 确实运行了测试,但测试总是会失败,因为 Sikuli 在屏幕上找不到图像。 Sikuli 错误消息是

\Jenkins\workspace\Smoke_Test_Suite\Console\src\main\java\resources\main-widget\calc.PNG: (229x325) in R[0,0 1024x768]@S(0)

有没有人遇到过 Sikuli 和 Jenkins 的这个问题。如果是这样,如何解决这个问题?

【问题讨论】:

  • 请记住,Sikuli 不会在“无头”模式下工作。它需要附加一个物理屏幕。
  • 我在运行 Sikuli 的同一台 PC/屏幕上运行 Jenkins。如果这就是你的意思。
  • 在其他窗口和应用程序之上,您是否还有尝试自动化的区域,以便 Sikuli 可以“看到”它?
  • 一旦我在 Jenkins 中选择“立即构建”,我会最小化屏幕上的所有内容,除了我想点击但没有运气的图像。如果我通过 Eclipse 或命令提示符执行相同的方法,它就可以工作。
  • 我收到这个错误:[错误] ImagePath: find: not there: calc.PNG FindFailed: calc.PNG not loaded

标签: java maven jenkins sikuli-script sikuli-x


【解决方案1】:

似乎找不到图像文件而不是屏幕上的图案本身。环境变量配置可能存在一些差异,并且在通过 Jenkins/Maven 运行时,路径不正确。要调试此问题以更好地了解实际配置的内容,请尝试将以下行添加到您的代码中并再次使用 Jenkins 运行它:

System.out.println(getBundlePath());

这将打印出当前配置的 Sikuli 查找图像文件的路径。我认为它会在不正确的位置查找文件。将路径设置到正确的位置。你可以这样做:

ImagePath.setBundlePath(correctPath);

【讨论】:

  • 谢谢。不幸的是,这并没有解决问题。这篇文章指导我解决了我的问题:serverfault.com/a/285140/548005。我还需要采取的另一个步骤是更改我的 JENKINS_HOME 环境变量以指向我原来的 Jenkins 设置。因此,通过 Jenkins .war 文件将 Jenkins 作为独立应用程序运行将允许 Sikuli 与屏幕上的 GUI 组件进行交互。我希望我能提供更多关于“为什么”服务阻止 GUI 组件被看到的细节。如果我在某个时候这样做,我会更新这篇文章。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-25
  • 1970-01-01
  • 2013-08-08
  • 2019-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多