首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建可重用的Sikuli屏幕快照库的策略是什么?

构建可重用的Sikuli屏幕快照库的策略是什么?
EN

Stack Overflow用户
提问于 2012-03-09 21:35:58
回答 5查看 6K关注 0票数 14

我想使用Sikuli来自动化在Mac和Windows浏览器中运行的GUI应用程序和Web应用程序。我目前的目标是测试,而更多的是用于GUI自动化,对于一个不幸没有低级自动化访问权限的团队来说,这是一个单调、重复的任务。

我想为GUI应用程序和Web应用程序建立一个或多个屏幕快照库,我可以在各个项目中重用它们。对于不同的应用程序,或者Web应用程序,在不同的浏览器/平台组合中,我经常运行相同的自动化步骤。

构建可重用的Sikuli屏幕快照库的一些好策略是什么?一些想法:

  • 我应该在Sikuli之外捕捉屏幕截图,然后切片/切掉这些图像,以提取出Sikuli内部的特定接口元素吗?
  • 如何最好地跟踪屏幕截图,以获得类似GUI应用程序之间等效的界面元素?
  • 如何才能最好地跟踪屏幕截图--在不同的浏览器或平台中看到相同的Web应用程序?
  • 如何最好地组织分层的元素,比如菜单,您必须选择1,然后选择2,然后选择3(但是下一个选择只出现在前面的选择之后)?
  • 是否应该将屏幕截图保存为变量,以便能够更一般地引用它们?
  • 我应该构造包含屏幕截图的Python列表或字典吗?
  • 是否应该根据应用程序/平台将屏幕截图分组为单独的Sikuli文件?

在所有这一切中,我假设我可以像Python模块一样导入库,从文档中可以看出这是可能的。

谢谢!

EN

回答 5

Stack Overflow用户

发布于 2012-03-09 23:56:04

还有一个名为"Sikuli的鲁棒GUI自动化库“的附加组件。

即使您最终没有使用这个库,通过查看它们对问题的实现,也可以学到一些非常好的经验教训。

几点建议:

我应该在Sikuli之外捕捉屏幕截图,然后切片/切掉这些图像,以提取出Sikuli内部的特定接口元素吗?

  1. 比如何获得元素更重要的是如何存储这些元素。我标准化了如何命名图形,即:Button_OK.png,而不是Sikuli的Button_OK.png
  2. 您可以在Sikuli脚本中添加“动态”图像库。在不同的目录中存储不同的浏览器和平台图形。 myImagePath = "M:\myImageLibrary\“addImagePath(myImagePath)

如何最好地跟踪屏幕截图,以获得类似GUI应用程序之间等效的界面元素?

命名约定!

代码语言:javascript
复制
\\firefox\\Button_OK.png
\\IE8\\Button_OK.png

您还可以使用模式的“相似性”,在IE和Firefox上获得相同的图形(但没有假阳性)。这可能需要一些尝试和错误。

我应该构造包含屏幕截图的Python列表或字典吗?

这是一个很好的练习,在某些情况下对我很有帮助。但是,有时文件名比列表偏移量更好地记录脚本功能。

在所有这一切中,我假设我可以像Python模块一样导入库,从文档中可以看出这是可能的。

是的,你可以导入库

票数 18
EN

Stack Overflow用户

发布于 2013-09-20 19:01:01

这看起来像是先锋推荐的一个很棒的图书馆。

我想在列表中再添加一个概念,那就是校准

和任何测试行业一样,校准你的仪器是必须的。

在SQA/自动化领域,假设可能导致灾难。

设想情况:

周一,你决定你的Chrome提交按钮屏幕截图,用于锡库利供电的自动化。

您的工作速度很快,到了周二,您的测试套件将按照您的预期提供准确的传递/失败。

周五下午,就在啤酒时间前夕,这台机器自动升级到下一个Chrome的小版本,它修改的取消按钮刚好足以与Sikuli匹配作为提交按钮。

在离开办公室度周末之前,你看一看你的报告,你的报告似乎像往常一样运转良好,但你没有意识到它们给出的是假阳性,直到整个周末都坏了的星期一才意识到(但是,嘿,至少你周末过得很好!)

完全假设的情况,但希望强调需要“测试您的测试”或校准您的工具在一个写一次,运行-许多自动化环境。

解决方案:

为了减少像上面这样的问题情况,您可以设置一个(或多个)您知道与静态库中的屏幕截图交互的特定方式的网页。在每个测试套件/批量自动化项目运行之前,它将调用校准套件,并确保一切正常运行,无论是浏览器、文件管理器等等。

票数 5
EN

Stack Overflow用户

发布于 2014-10-10 15:38:14

作为Java开发人员(不确定这是否适用于许多sikuli用户):我推出了自己的实现。我创建了一个单例FileDirectory对象,它包含用于默认目录(资源、模式、屏幕快照)的方法。每当我让sikuli截图时,我都会将它保存到这个默认目录中(如果启动时不存在这个目录,就会创建这个目录)。我的应用程序会记录截图。使用html记录器,我可以链接到屏幕截图目录。因此,我的html日志中嵌入了与应用程序获取的图像的链接。

我知道这在一开始看起来很困难,但最终提供了所需的用例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9641327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档