如何使用Squish和Robot框架检测文本框上的颜色?

问题描述

我有一个桌面应用程序,该应用程序具有人们可以在文本框中填写的表单。如果输入的值无效,则该框将变为粉红色并带有红色边框。我在Squish中使用Robot框架尝试在某个文本框上发生此错误时进行识别。最好的方法是什么?

解决方法

通常在QT中,当发生动作时,它们会触发信号和某些组件中的插槽。我假设组件的状态是通过触发信号并由文本框接收到的东西来处理的。

您可以尝试监视给出无效输入时触发的内容,并在断言中使用它。

另一种方法,您也许能够读取文本输入小部件的属性,并查看在给出无效输入时发生的变化..

,

获取导致渲染改变的内部状态可能并不容易,但至少取决于所使用的GUI技术。 (我想您还没有告诉我们。)

一种更简单的方法是仅将screenshot verification point(SVP)用于该控件。在该SVP中,您可以使用正遮罩标记一个特定区域,该区域最不可能受到控件内容的影响(以使SVP尽可能健壮)。

一种类似的方法是使用(验证用于在屏幕上渲染的实际像素颜色)object.grabScreenshot(),然后使用返回的Image Object的API通过 Image.getPixelRGB(x,y) Image.getPixelRGBA(x,y)