构建可重复使用的 Sikuli 屏幕截图库的策略是什么?

2024-05-02

我想使用 Sikuli 来自动化在 Mac OS X 和 Windows 上的浏览​​器中运行的 GUI 应用程序和 Web 应用程序。目前,我的目的不是测试,而是为团队提供 GUI 自动化执行繁琐、重复性的任务,不幸的是,该团队目前没有较低级别的自动化访问权限。

我想为 GUI 应用程序和 Web 应用程序构建一个或多个屏幕截图库,以便在项目中重复使用。我经常为不同的应用程序运行相同的自动化步骤,或者对于 Web 应用程序,在不同的浏览器/平台组合中运行相同的自动化步骤。

构建可重用的 Sikuli 屏幕截图库有哪些好的策略?一些想法:

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

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

Thanks!


有一个名为“强大的 Sikuli GUI 自动化库 http://code.google.com/p/rguils/".

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

一些建议:

我应该在 Sikuli 之外捕获屏幕截图,然后对这些图像进行切片/切块以提取 Sikuli 中的特定界面元素吗?

  1. 比如何获取元素更重要的是如何存储这些元素。我标准化了图形的命名方式,即:Button_OK.png而不是西库利的不可预测的_默认_名称.png

  2. 您可以在 Sikuli 脚本中“即时”添加图像库。将不同浏览器和平台的图形存储在不同的目录中。

    myImagePath = "M:\\myImageLibrary\\"
    addImagePath(myImagePath)
    

我怎样才能最好地跟踪等效界面的屏幕截图 类似 GUI 应用程序中的元素?

命名约定!

\\firefox\\Button_OK.png
\\IE8\\Button_OK.png

你还可以玩弄“相似度”Pattern http://doc.sikuli.org/pattern.html#Pattern.similar在 IE 和 Firefox 上获得相同的图形(但没有误报)。这可能需要一些尝试和错误。

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

这是一个非常好的做法,在某些情况下对我来说效果很好。但有时,文件名比列表偏移量更能说明脚本功能。

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

是的你可以导入库 http://doc.sikuli.org/globals.html#importing-other-sikuli-scripts-reuse-code-and-images.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

构建可重复使用的 Sikuli 屏幕截图库的策略是什么? 的相关文章

  • Sikulix/Jython UAC 自动化

    我想知道是否有人有幸在安装程序自动化期间通过 UAC 弹出窗口实现自动化 我有一个现有的自动安装程序代码 但由于 Sikuli 在此步骤中未使用键盘 鼠标 它在 UAC 区域失败 有人在这里有运气吗 或者在 Jython 中没有办法做到这一
  • 在 pip jnius 安装中找不到 JRE_HOME

    正在尝试安装jnius来自 pip 这是一个要求pip install sikuli 这是我尝试安装时遇到的错误 变量定义是否正确 有谁明白为什么它一直说找不到JRE HOME Edit 我的路径变量是 setup py 包含 jdk ho
  • 无法在 Sikuli 中导入 PIL

    我想在 Sikuli 中导入 PIL 为此我添加了下面的代码 import sys sys path append C Python27 Lib site packages sys path append C Python27 Lib si
  • 为什么有时Python子进程在运行进程后无法获得正确的退出代码?

    我正在使用 Python 子进程在 Windows 7 上运行外部脚本 我正在尝试获取退出代码 在情况 1 中 我运行一个 python 脚本test1 py test1 py import sys sys exit 24 lt exit
  • 如何暂停、恢复和停止 Sikuli 程序?

    假设我正在运行一个 Sikuli 程序 并且我想在特定点暂停该程序 然后在一段时间后我想从暂停的点恢复程序 而不影响进程 然后我想停止该进程并退出 我停下来直到它应该被保存的那一点 西库里可以吗 如果是 那么如何 Press Alt Shi
  • 如何使用 Sikuli 中的“type”函数检查变量类型

    西库里有自己的功能type用于打字 有没有办法调用 python jython 函数type 模块builtins无法导入 我当然可以使用是实例相反 但我只是好奇是否有可能超出 Sikuli 范围并调用不 覆盖 的 python 内置函数t
  • 是否可以使用 Sikuli 来断言图像在无 GUI 模式下是相同的?

    我有一个无头运行的测试服务器 我想要的一项测试是检查特定 URL 提供的图像是否与某些参考图像匹配 Sikuli 中是否有一个 API 可以直接接受图像作为流并将其与从本地资源文件中获取的其他图像进行比较 不幸的是 没有关于 Sikuli
  • 在Sikuli拍照的命令是什么

    我正在使用 Sikuli IDE 我想知道截屏的命令是什么 这样我就可以在测试结束时捕获屏幕 像这样的东西 try if bla bla bla print blablabla else TAKESCREENSHOT gt What com
  • AWT 机器人无法拖动窗口

    我正在尝试使用 AWT 机器人移动 Windows 资源管理器窗口 该机器人运行Java 7 操作系统为Windows 7 我可以移动鼠标并单击某些内容 但是当我尝试单击并拖动时 它似乎根本没有按下按钮 我看不出出了什么问题 或者想不出如何
  • 如何在python中导入sikuli模块?

    我在使 sikuli python 单元测试正常工作时遇到问题 并且很高兴获得一些帮助 我在互联网上进行了广泛的搜索 但没有任何有效的方法 我的Python知识非常有限 我想这没有帮助 我用的是win7 32位 西库里 1 0 rc3 r9
  • 如何从 .sikuli 文件夹中检索代码?

    当我打开一个 sikuli文件夹 里面只有图像 所以我想知道是否有任何方法可以在不使用 Sikuli IDE 的情况下查看或检索 Sikuli 代码 我可以从 sikuli文件夹 根据文档 http doc sikuli org devs
  • Sikuli - 切换监视器和分辨率使脚本无效

    我确实经常在笔记本电脑屏幕和外部 24 英寸显示器之间切换 并且我确实注意到 如果我在笔记本电脑上拍摄快照 那么如果我在连接到 24 英寸显示器时运行脚本 测试将不再正常工作 如果我反过来 从 24 英寸显示器上拍摄快照 然后在笔记本电脑显
  • 有什么比 Sikuli 更好的工具可以在 Windows 7(或者最好是多平台)上用于屏幕自动化[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • RDP(VM) 最小化时自动化脚本失败

    我一直面临着在其中一台虚拟机上自动执行脚本的问题 我已经实现了保存文档功能的自动化 该功能最好是 Windows 设计的 UI 我尝试过使用各种技术 工具 如 AutoIT Python Sikuli 但如果虚拟机最小化 脚本就会停止 如果
  • 使用Python logger类为不同的日志级别生成多个日志

    我在这里浏览了 python 日志记录类的教程 没有看到任何可以让我为同一输出创建不同级别的多个日志的内容 最后我想要三个日志
  • 使用 Sikuli 进行拖放

    我在使用 Sikuli 拖放时遇到问题 我想在任何其他方向 上 下 左 右 拖动某些东西固定数量的像素 这看起来应该有效 t find 1325249963143 png dragDrop t t x 100 t y 100 Sikuli
  • jnius 1.1导入错误

    当我想导入 jnius 时出现如下错误 Traceback most recent call last File C Python27 lib site packages jnius init py line 12 in
  • 构建可重复使用的 Sikuli 屏幕截图库的策略是什么?

    我想使用 Sikuli 来自动化在 Mac OS X 和 Windows 上的浏览 器中运行的 GUI 应用程序和 Web 应用程序 目前 我的目的不是测试 而是为团队提供 GUI 自动化执行繁琐 重复性的任务 不幸的是 该团队目前没有较低
  • Sikuli 积分器 C#

    我想在 C 中使用 Sikuli Integrator 我以管理员身份运行 VS 通过 NuGet 管理器安装 Sikuli Integrator 并想在简单任务上测试他 这是我的代码 using SikuliModule using Sy
  • 西库里间歇性故障

    我已将 Sikuli 与我的 Selenium 项目集成 为了学习 我使用简单的 gmail 登录应用程序使用 Sikuli 来实现自动化 好吧 我能够执行脚本 现在假设我正在用户名字段中输入一些内容 有时 鼠标不会悬停在用户名字段上 所以

随机推荐

  • Python Peeweeexecute_sql() 示例

    我使用 Peewee 模块作为我的项目的 ORM 我看了整个文档 没有明确的 有关如何处理 db execute sql 结果的示例 我跟踪代码 只能发现db execute sql 返回游标 有谁知道如何处理光标 例如迭代它并获取 返回复
  • 为什么要输入两次密码?

    在大多数网站的注册用户部分 他们要求您输入密码两次 这是为什么 为什么不只输入一次密码 为什么一定要 确认 呢 You know Username Password Confirm password Submit 这件事在我心里已经有一段时
  • 让垂直网格线出现在 matplotlib 的线图中

    我想在绘图上同时获得水平和垂直网格线 但默认情况下仅显示水平网格线 我正在使用一个pandas DataFrame从 python 中的 sql 查询生成 x 轴上带有日期的线图 我不知道为什么它们没有出现在日期上 我试图寻找这个问题的答案
  • SyntaxError:多个异常类型必须用括号括起来

    我是初学者 在使用 python 安装 pycaw 进行音频控制后遇到问题 在放置 pycaw 的基本初始化代码时 出现以下错误 Traceback most recent call last File c Users volumeCont
  • 免费 DTD 到 XSD 转换实用程序? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个 DTD 需要将其转换为 XSD XML 架构 文件 有免费的实用程序或简单的方法来完成此任务
  • 使用会员提供程序的用户和角色列表

    我正在尝试使用内置的会员资格提供程序生成一个视图来显示用户列表及其角色 我的模型和控制器正在获取用户和角色 但我无法在视图中显示它们 Model public class AdminViewModel public MembershipUs
  • ElasticSearch JavaAPI (SearchScroll)- search_context_missing_exception","re​​ason":"找不到 id 的搜索上下文

    我正在获取超过100k使用一个索引中的文档searchScroll并在所有字段中再添加一个字段100K文件 然后再次将这些文档插入到另一个新索引中 我正在使用SearchScrollapi 也在设置大小searchSourceBuilder
  • 在 R 中绘制非常大的数据集

    如何在 R 中绘制非常大的数据集 我想使用箱线图 小提琴图或类似的图 内存中无法容纳所有数据 我可以逐步读入并计算制作这些图所需的摘要吗 如果是这样怎么办 作为对我的评论的补充德米特里回答 https stackoverflow com q
  • 为什么我的 Linux 应用程序引入了错误的 .so 库?

    我正在构建一个使用 NetCDF C 库的应用程序 并且 NetCDF 正在引入 HDF 4 库 然而 它正在拉动wrongHDF 4 库 我的应用程序的链接方式如下 apps1 intel bin icpc gxx name apps1
  • 将resourceBundle与外部文件java一起使用

    我一直在阅读有关此问题的其他问题和答案 但我不明白资源边界是如何完全工作的 我认为这与 Joomla 使用多语言选项的方式类似 基本上 您有要阅读的不同语言的不同消息的文件 所以我在 src Lang 文件夹中创建了 System prop
  • 如何在Azure上运行nodejs、express js项目的启动命令?

    我在用Azure 开发运营对于我的应用程序 我不确定如何为该项目设置启动命令 如果我将它添加到创建的管道中的任务中 它会给出一个错误 也许是因为该过程永远不会结束 实际上 我可以运行 npm install 并创建工件 但我需要应用程序启动
  • 弹出到主屏幕

    在我的应用程序中 我一个接一个地喜欢一些屏幕 并且我需要随时弹出到主屏幕 有什么方法可以找出活动屏幕是否是第一个 或者 可能有什么功能可以弹出到根屏幕而不循环弹出到以前的屏幕 EDIT换句话说 我需要我的应用程序在单击黑莓 后退 按钮时转到
  • 结束一天(日期时间)的最优雅的方式是什么?

    我目前正在编写一些报告代码 允许用户选择指定日期范围 它的工作方式 简化 是 用户 可选 指定年份 用户 可选 指定月份 用户 可选 指定一天 这是一个代码片段 以及描述我想要的内容的注释like to do from datetime i
  • ns_initparse 的链接器错误

    这是代码 include
  • 从 SQL 获取 xml 属性

    对于此 xml 在 SQL 2005 XML 列中
  • 为什么删除 DataFrame 的列或部分会增加内存使用量,以及如何确保对未使用的 DataFrame 切片进行垃圾回收

    处理大型 DataFrame 时 您需要小心内存使用情况 例如 您可能想要分块下载大数据 处理这些块 然后从内存中删除所有不必要的部分 我找不到任何有关处理垃圾收集的最佳程序的资源pandas 但我尝试了以下方法并得到了令人惊讶的结果 im
  • 如何在 Octave 中有效地从 csv 读取大矩阵

    有很多关于 Octave 性能缓慢的报告dlmread 我希望这个问题在 3 2 4 中得到修复 但是当我尝试加载大小为 ca 的 csv 文件时 8 4百万 总共32百万 也花了非常非常长的时间 我在网上搜索但找不到解决此问题的方法 有人
  • 插入失败“OperationalError:没有这样的列”

    我尝试使用我尝试修复的姓名和电话创建一个数据库 但它会随时向我重播 File exm0 py line 14 in
  • 调用控制器 Post 方法时遇到问题

    这是我的方法 AcceptVerbs HttpVerbs Post public void SaveImage FormCollection formValues byte contents Convert FromBase64String
  • 构建可重复使用的 Sikuli 屏幕截图库的策略是什么?

    我想使用 Sikuli 来自动化在 Mac OS X 和 Windows 上的浏览 器中运行的 GUI 应用程序和 Web 应用程序 目前 我的目的不是测试 而是为团队提供 GUI 自动化执行繁琐 重复性的任务 不幸的是 该团队目前没有较低