首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从FindFailed异常中继续,而不是重新执行整个脚本

FindFailed 异常通常在使用图像识别库(如 SikuliX)进行自动化测试时抛出,表示未能在屏幕上找到预期的图像。当遇到这种情况时,重新执行整个脚本可能不是最高效的解决方案,特别是当脚本很大或者某些步骤不需要每次都执行时。

基础概念

FindFailed 异常是 SikuliX 库中的一个异常类,用于指示图像匹配失败。它通常发生在 find()wait() 等方法未能在指定时间内找到匹配的图像时。

相关优势

  • 提高效率:通过仅重新执行失败的步骤而不是整个脚本,可以显著减少执行时间。
  • 更好的错误处理:能够更精确地定位问题所在,便于调试和改进自动化流程。

类型与应用场景

  • 类型FindFailed 是一个异常类型,用于指示图像识别失败。
  • 应用场景:自动化测试、屏幕抓取、用户界面自动化等。

问题原因与解决方法

当遇到 FindFailed 异常时,通常是因为以下原因之一:

  1. 图像变化:目标图像在屏幕上的位置或外观发生了变化。
  2. 超时设置:等待时间设置过短,导致未能在规定时间内找到图像。
  3. 环境差异:不同环境(如开发、测试、生产)中的屏幕分辨率或布局差异。

解决方法

  1. 增加等待时间
  2. 增加等待时间
  3. 动态调整搜索区域
  4. 动态调整搜索区域
  5. 使用更灵活的匹配策略
  6. 使用更灵活的匹配策略

参考链接

通过上述方法,可以在遇到 FindFailed 异常时更灵活地处理,并继续执行脚本而不是重新执行整个脚本。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

sikuli python java_自动化测试之sikuli调研

Sikuli IDE执行脚本时,通过Python解析器和java库的桥梁,核心部分解析是通过java库实现的分两个部分,java.awt.Robot用来传递键盘和鼠标的事件流到适当位置;给予OpenCV...); ü 在有上传文件、图片等操作的自动化测试,用sikuli的图片识别技术更为方便; ü 用sikuli来编写代码时,所截到的图片应该避免雷同,且尽量缩小范围,便于执行点击、填写等操作时,由于范围过大而定位错误...,并且运行脚本时,需要打开appium的前期步骤也比较多,sikuli仅需简单安装小萝贝控机大师即可; ü Appium代码前期需要配置的参数过多,sikuli仅需按照日常手动操作的步骤来进行即可...,需重新截取所操作手机的截图; ü 若需要测试手机app的某一单独模块时,则应使用appium,可以自动定义启动哪一activity,省去前面一系列步骤。...2、图片的分辨率、色彩、尺寸、唯一性对程序的影响 (如果有两个相同的,无法区分具体哪一个) 3、sikuli本身还不完善(处于开发、升级阶段) 还有很多程序bug,能否继续发展还是未知数 4、只认识当前活动的图标

1.6K10

python fork()多进程

但是第二个拷贝并不是开始就重新开始的。两个拷贝在对fork()调用后会继续——进程的整个地址空间被拷贝。这时可能会出现错误,os.fork()可以产生异常。...如果父亲进程在子进程之前终止,子进程会一直执行。系统会通过把它们的父进程设置为init(PID 1)来重新制定父进程。init进程就会负责清楚zombie进程。...两个进程应该同时执行,当程序执行到该点的时候,实际上存在着两个程序的拷贝在执行。所以问候语在代码只出现一次,结果却显示两次。 五、zombie示例 #!...time.sleep()有一种特殊情况,如果任意一个信号处理程序被调用,睡眠会被立刻终止,不是继续等待剩余的时间。 七、总结 大多数服务器都需要同时处理多个客户端。...如果系统不能执行fork,os.fork()函数可以产生异常。为了防止服务器当机,必须处理这个异常

2.1K20
  • php 抛出异常使用场景

    异常被触发时,通常会发生: 当前代码状态被保存 代码执行被切换到预定义(自定义)的异常处理器函数 根据情况,处理器也许会保存的代码状态重新开始执行代码,终止脚本执行,或代码另外的位置继续执行脚本...---- 异常的基本使用 当异常被抛出时,其后的代码不会继续执行,PHP 会尝试查找匹配的 “catch” 代码块。...PHP 7 错误异常级别 在过去的 PHP ,几乎不可能会去处理致命错误。致命错误只会轻易的终止脚本执行不会调用 set_error_hander() 错误处理程序。...在 PHP 7 ,当致命或是可恢复性错误 (E_ERROR and E_RECOVERABLE_ERROR) 发生时,异常会被捕获,不是中止脚本。...然而,在一些场合下,需要宽泛的捕获异常(比如日志或是框架的错误处理)。在 PHP 7 ,这些异常捕获块更适合使用 Throwable 不是 Exception。

    1.9K30

    深度学习分布式训练框架 horovod (12) --- 弹性训练总体架构

    本文是系列第十二篇,看看horovod 如何实施弹性训练。 弹性训练使得Horovod具备运行时worker数量动态伸缩,不需要重启 或者 只是存储的checkpoint恢复训练。...如何 checkpoint恢复? checkpoint需要存储哪些东西,即,对于horovod来说,哪些状态是必须的? 如何监听 worker 的工作情况?怎么判断机器出了问题?...Worker 在捕获异常之后会将异常传递给对应的 Python API 处理,API 通过判断异常类型决定是否继续训练。...此异常的处理方式与“HorovodInternalError”类似,只是参数状态不会还原到上次commit,而是当前实时参数恢复。...: 在 hvd.elastic.run 装饰器捕获上述两个错误; 如果抛出的是 HorvodInternalError 错误,则会最后的一次 commit 状态恢复; 重新初始化 Horovod

    96520

    面试题_软件测试岗_UI自动化篇_1.4

    软件测试UI自动化通过使用自动化工具和脚本来模拟用户交互、执行测试用例和检测界面问题。它能够帮助测试团队提高测试效率和准确性,减少人工测试的工作量,并提供一致性的测试结果。...一旦编写了自动化测试脚本,它们可以反复执行,确保每次执行的结果一致。这样可以确保软件在不同环境和配置下的一致性表现。...此外,当应用程序发生变化时,只需更新相关的自动化脚本不需要重新执行整个测试过程,大大节省了时间和精力。 通过软件测试UI自动化,测试团队还可以更早地介入软件开发过程,并与开发团队紧密合作。...随着软件开发行业的不断发展,软件测试UI自动化的重要性将继续增长,并成为软件开发过程的核心环节。 01/什么是POM,为什么要使用它?...POM是Page Object Model的简称,它是一种设计思想,不是框架。

    8710

    急速 debug 实战一(浏览器-基础篇)

    最近在写代码的时候越发觉得不是代码有多难,而是当代码出了问题该如何调试,如何追溯本源,这才是最难的。 响应这个要求,我决定写一个关于调试实战系列。本来不打算写这个基础篇章,为了整个的完整性。...单步调试代码 一个常见的错误原因是脚本执行顺序有误。 可以通过单步调试代码一次一行地检查代码执行情况,准确找到执行顺序异常之处。...DevTools 现在始终会在执行此行代码之前暂停。 点击 Resume script execution 继续执行脚本脚本继续执行,直到第 32 行。...立即尝试: 点击 Resume script execution 继续执行脚本。...代码的代码行断点 在代码调用 debugger 可在该行暂停。 此操作相当于使用代码行断点,只是此断点是在代码设置,不是在 DevTools 界面设置。

    3.3K10

    深度剖析:Redis分布式锁到底安全吗?看完这篇文章彻底懂了!

    怎样原子执行呢?Lua 脚本。 我们可以把这个逻辑,写成 Lua 脚本,让 Redis 来执行。...而我们在使用 Redis 时,一般会采用主从集群 + 哨兵的模式部署,这样做的好处在于,当主库异常宕机时,哨兵可以实现「故障自动切换」,把库提升为主库,继续提供服务,以此保证可用性。...如果上面讲的内容,你还没有理解,我建议你重新阅读一遍,先理清整个加锁、解锁的基本流程。...在分布式系统,总会出现「异常节点」,所以,在谈论分布式系统问题时,需要考虑异常节点达到多少个,也依旧不会影响整个系统的「正确性」。...无论如何,通过争论和检查它们是否经得起别人的详细审查,这是学习过程的一部分。但目标应该是获取知识,不是为了说服别人,让别人相信你是对的。有时候,那只是意味着停下来,好好地想一想。” 共勉。‍‍

    84810

    浏览器原理

    如果找不到任何匹配规则,解析器就会引发一个异常。这意味着文档无效,包含语法错误。 解析器类型有两种: 自上而下解析器:语法的高层结构出发,尝试从中找到匹配的结构。...脚本在文档解析阶段会请求样式信息时还没有加载和解析样式,脚本就会获得错误的回复。Firefox 在样式表加载和解析的过程,会禁止所有脚本。...解析器遇到 script标记时立即解析并执行脚本。文档的解析将停止,直到脚本执行完毕。 如果脚本是外部的,那么解析过程会停止,直到网络同步抓取资源完成后再继续。...处于流靠后位置元素通常不会影响靠前位置元素的几何特征,因此布局可以按左至右、从上至下的顺序遍历文档。坐标系是相对于根节点建立的,使用的是上坐标和左坐标。...浏览器的自身优化 如果布局是由“大小调整”或呈现器的位置(而非大小)改变触发的,那么可以从缓存获取呈现器的大小,而无需重新计算。 在某些情况下,只有一个子树进行了修改,因此无需根节点开始布局。

    2K21

    浏览器原理0. 前言1. 解析过程2. 渲染树2.1 CSS样式计算2.2 构建渲染树3. 布局(重要)4. 重绘与重排(重要)5. paint(绘制)6. composite(重要)7. 浏览器加载

    如果找不到任何匹配规则,解析器就会引发一个异常。这意味着文档无效,包含语法错误。 解析器类型有两种: 自上而下解析器:语法的高层结构出发,尝试从中找到匹配的结构。...脚本在文档解析阶段会请求样式信息时还没有加载和解析样式,脚本就会获得错误的回复。Firefox 在样式表加载和解析的过程,会禁止所有脚本。...解析器遇到 script标记时立即解析并执行脚本。文档的解析将停止,直到脚本执行完毕。 如果脚本是外部的,那么解析过程会停止,直到网络同步抓取资源完成后再继续。...处于流靠后位置元素通常不会影响靠前位置元素的几何特征,因此布局可以按左至右、从上至下的顺序遍历文档。坐标系是相对于根节点建立的,使用的是上坐标和左坐标。...浏览器的自身优化 如果布局是由“大小调整”或呈现器的位置(而非大小)改变触发的,那么可以从缓存获取呈现器的大小,而无需重新计算。 在某些情况下,只有一个子树进行了修改,因此无需根节点开始布局。

    5.2K41

    按键精灵——代码调试常用技巧

    找不到就对了,bug可不是那么容易就能发现的 ? 仿佛就是昨天,还在忧伤如何去调试脚本代码,出现各种奇葩的问题。...整个下来,找图成功与否一目了然,如果省略了这一步,倘若找图失败,可能会引发后续代码执行异常。弹出失败,自然就会想到如何去纠错,不是不知道错在哪里。 顺便,还有个调试的菜单不知道大家是否有使用过。...调试信息,显示“脚本auto_check.Q,第5行:找图失败,请检查截图是否有存入附件目录,或更改截图重试!...使用TracePrint的好处,就是它不会中断脚本的运行,如果是MessageBox,弹窗后需要点击确定,才能继续往下。...二者适用于不同的场景,比如某些异常,找图失败后要暂停脚本,不然后续操作全都会异常,这种情况可以用MessageBox。

    7.1K40

    teg 一次云故障引起的思考

    整个过程,我们能做什么呢? 1. 第一时间反馈业务方:例如客服,运营等,如果收到用户反馈,能够及时说明情况; 2. ...因为只有部分区域的服务器异常,能不能申请一些新的服务器,将受影响服务器上的站点与服务重新部署,通过服务治理将流量切到新的服务上,是不是能恢复(至少部分恢复)呢?...整个过程,我们能做的是: 1. 申请新服务器; 2. 确认受影响的站点与服务、重新部署; 3. 服务治理,将流量迁移; 这里面,潜在的技术问题是: 1....确定日志是否异常; 3. 确定业务在线业务是否异常; 4. 一些容易遗漏的点的再三检查:例如MQ的消费,定时任务的执行。 画外音:有些定时任务可能需要手动再次执行。...这里面的很多工作,是通过手工,还是脚本自动化,还是平台可视化来判断与执行?技术平台的迭代,仍重道远。 四 服务观察稳定后一段时机,大部分技术同学陆陆续续登出V**下线了。

    76920

    Go: 并发编程的错误恢复机制与代码持续执行分析

    代码分析 根据前面的代码,当goroutine中发生panic时,recover会被触发,执行错误处理逻辑。这是一种优秀的错误处理模式,可以防止整个服务因为单个任务的失败完全崩溃。...为什么不会继续执行? Go语言中,panic类似于其他语言中的异常抛出,但它不支持catch后继续执行的逻辑。一旦panic发生,除非使用recover捕获,否则会导致整个goroutine结束。...即使使用了recover,goroutine也只是避免了崩溃,但无法panic发生的点继续执行。...解决方案 如果希望在panic后继续执行,可以在recover后重新调用相同的函数,或者设计一种机制重新将任务加入队列。...在此案例,虽然recover能够防止整个服务崩溃,但它并不会让goroutinepanic发生的地方继续执行。设计时应考虑如何处理这些未完成的任务,以保持系统的鲁棒性。

    20310

    Redis分布式锁到底安全吗?

    怎样原子执行呢?Lua 脚本。 我们可以把这个逻辑,写成 Lua 脚本,让 Redis 来执行。...而我们在使用 Redis 时,一般会采用主从集群 + 哨兵的模式部署,这样做的好处在于,当主库异常宕机时,哨兵可以实现「故障自动切换」,把库提升为主库,继续提供服务,以此保证可用性 那当「主从发生切换...试想这样的场景: 客户端 1 在主库上执行 SET 命令,加锁成功 此时,主库异常宕机,SET 命令还未同步到库上(主从复制是异步的) 库被哨兵提升为新主库,这个锁在新的主库上,丢失了!...注意:不是部署 Redis Cluster,就是部署 5 个简单的 Redis 实例。 Redlock 具体如何使用呢?...在分布式系统,总会出现「异常节点」,所以,在谈论分布式系统问题时,需要考虑异常节点达到多少个,也依旧不会影响整个系统的「正确性」。

    78920

    分布式计算框架状态与容错的设计

    例如,一个程序从一个文件读取数据,程序在内存记录下来文件读取到了什么位置,将其保存在某个对象的offset字段,以便接下来该位置继续读取。...如果作业在中途异常停止,大不了可以重新再运行一次。 然而,对于流处理作业并不是这样。因为从业务上来说,流处理作业会7*24地不间断运行。...这是两类分批次执行的任务,后者的输入依赖前者的输出。Hadoop的设计思想十分简单——当任务出现异常时,重新跑该任务即可。其实,跑成功的任务的输出,就相当于整个作业的中间结果得到了持久化。...如上图所示,如果P10发生故障,则P00与P01都会重新计算,计算P00和P01又会继续找其父分区重新计算。按照这个血缘关系来看,一直向上追溯会付出极大的代价。...单机程序开始 现在跳出Flink框架,设想一个运行在单个节点的进程,该如何设计容错机制。 比较容易想到的一个思路是,在主线程外另开启一个线程执行定时任务,定期地将状态数据刷写到磁盘。

    46530

    PyTorch 分布式之弹性训练(1) --- 总体思路

    问题点:单个节点故障往往会导致整个训练job结束。虽然框架提供了checkpoint功能,但是频繁调用会导致性能问题,所以依然会丢失一段时间的训练成果,并且还得继续进行任务排队。...如果用户对容错不感兴趣,他们可以通过设置"max_restarts=0"来获得准确的功能/行为,并增加自动分配"RANK"和"MASTER_ADDR"端口的便利性(不是在"torch.distributed.launch...应用编写者负责现有可用还原点文件加载和重新启动。与 v0.1 不同,PET v0.2 不强制指定如何管理checkpoints。...Horovod 会定期执行这个脚本来发现当前节点。 TE 利用分布式一致性中间件 ETCD 或者自带的 C10D后端(基于TcpStore)来解决节点之间互相发现的问题。 如何捕获异常?...Horovod 捕获集合通信异常/节点异常/扩缩容,转换为Horovod自己的Exception,然后会依据配置重(比如内部建立异常节点黑名单)新建立环,继续训练。

    1.6K20

    Selenium4+Python3系列(六) - Selenium的三种等待,强制等待、隐式等待、显式等待

    如何避免元素未加载出来导致定位失败 ? 三种方式,强制等待、隐式等待、显式等待!...1、强制等待 就是sleep() ,也叫硬等待;缺点就是:如果等待时间过长,即使元素已被加载出来了,但还是要继续等,这样会导致整个脚本执行上会浪费很多时间。...WebDriver 可以异步执行脚本,这个是设置异步执行脚本脚本返回结果的超时时间。 set_page_load_timeout 页面加载时的超时时间。...poll_frequency)调用这个传入的方法,直到返回值不是False message: 如果超时,抛出TimeoutException,将message传入异常 until_not WebDriverWait...,until_not是当某元素消失或什么条件不成立则继续执行,参数也相同。

    2.8K20

    前端魔法堂——异常不仅仅是trycatch

    不是未出发就已经很期待呢?好吧,大家捉紧扶手,老司机要开车了^_^ 概要  本篇将叙述如下内容: 异常还是错误?它会如何影响我们的代码? 内置异常类型有哪些? 动手写自己的异常类型吧!... // 1.当前代码块将作为一个任务压入任务队列,JavaScript线程会不断地任务队列中提取任务执行; // 2.当任务执行过程中报异常,且异常没有捕获处理,则会一路沿着调用栈顶到底抛出...,最终终止当前任务的执行; // 3.JavaScript线程会继续任务队列中提取下一个任务继续执行。...Promise实例的初始化状态是pending,发生异常时则为rejected,导致状态pending转变为rejected的操作有 调用Promise.reject类方法 在工厂方法调用reject...总结  对异常如何捕获异常仅仅是前端智能监控的一小撮知识点,敬请期待后续另一小撮知识点《前端魔法堂——调用栈,异常实例的宝藏》吧:D  尊重原创,转载请注明来自 ^_^肥仔John 参考 https

    1.1K30

    前端魔法堂——异常不仅仅是trycatch

    不是未出发就已经很期待呢?好吧,大家捉紧扶手,老司机要开车了^_^ 概要  本篇将叙述如下内容: 异常还是错误?它会如何影响我们的代码? 内置异常类型有哪些? 动手写自己的异常类型吧!... // 1.当前代码块将作为一个任务压入任务队列,JavaScript线程会不断地任务队列中提取任务执行; // 2.当任务执行过程中报异常,且异常没有捕获处理,则会一路沿着调用栈顶到底抛出...,最终终止当前任务的执行; // 3.JavaScript线程会继续任务队列中提取下一个任务继续执行。...Promise实例的初始化状态是pending,发生异常时则为rejected,导致状态pending转变为rejected的操作有 调用Promise.reject类方法 在工厂方法调用reject...总结  对异常如何捕获异常仅仅是前端智能监控的一小撮知识点,敬请期待后续另一小撮知识点《前端魔法堂——调用栈,异常实例的宝藏》吧:D 参考 https://developer.mozilla.org

    1.5K70

    干货视频|Zabbix5.0升级最佳实践以及常见问题排查

    例如你采用的可能是某个社区开发的模板,它使用自定义脚本或一些前端修改、数据库修改,虽然不是必然,但是在升级的过程这些自定义很可能会导致一些问题。...所以我们需要在新表上重新创建约束,这里有一些示例查询,我是如何重新创建它们的一些示例语句。请注意,事件表没有任何更改,如果你是4.0升级到5.0,那么根本不需要担心这一点。...也许更好的做法是为整个环境做好未来的准备,并创建一个新的虚拟机,使用最新的操作系统。我们现在和将来都可以安装proxy,所以这实际上就是我们所做的。在实际环境,这是一个真实的用例。...对脚本和自定义媒体类型的集成执行测试 接下来,对你的脚本和自定义媒体类型的集成执行测试。如果它们正常工作,并且你可以获得预期的数据,那么很好,我们可以继续。...脚本切换到WEBHOOKS,这是4.2增加的一个很大的功能,用WEBHOOK来集成,不是使用你自己编写的脚本,你可能花了几个小时来编写,现在还要花时间维护,必须维护。

    79820

    WebUI自动化测试隐藏的元素如何操作?三种元素等待方式如何理解?

    1 自动化测试隐藏的元素如何操作?面试,我们经常会遇到“隐藏元素是如何操作的?”带着这个问题我们看下如何操作?...1.1 实现方法针对隐藏因素的操作,常用的操作是通过JS脚本定位到该元素,获取对应的元素对象,再通过removeAttribute和setAttribute两个方法完成属性的删除或重新复制操作,使得当前元素处于显示状态即可...在自动化测试,会遇到一些比如环境不稳定、网络不稳定的因素,此时可能需要控制脚本执行速度,那么就需要用到元素等待操作。其实不一定设置等待就好,各有利弊,以下是一些观点仅供参考。...表示整个页面的所有元素加载完才会执行,会根据内部设置的频率不断刷新页面继续加载并检测当前所执行的元素是否加载完成。如果在设定的时间之前元素加载完成,则不会继续等待,继续执行下一步。...优缺点:优缺点说明 优点对整个脚本的生命周期都起作用,只需要设置一次缺点程序会一直等待加载完成,才会执行下一步,但有时想要的元素加载完了,其他的元素没有加载完,仍要等待全部加载完才进行下一步,不是很灵活

    531131
    领券