如何在 Katalon Studio 中等待部分元素属性值

How to wait for partial element attribute value in Katalon Studio

我的应用程序使用红绿灯样式的图像向用户报告消息发送成功。

HTML 的图像是这样的:

<img src="images/green.gif" border="0" style="width: 15px; height: 15px; position: relative; left: -1px; top: 1px;">
<img src="images/orange.gif" border="0" style="width: 15px; height: 15px; position: relative; left: -1px; top: 1px;">
<img src="images/red.gif" border="0" style="width: 15px; height: 15px; position: relative; left: -1px; top: 1px;">

因此,当您单击发送消息的按钮时,图像会保持橙色一段时间,然后变为红色或绿色。

然而,尽管 "images/green.gif" 是 Chrome Dev Tools 中显示的源属性,当我将鼠标悬停在该元素上时,我可以看到完整的 src 类似于“https://myapp.com/production/images/green.gif” URL 的第一部分根据使用的服务器而变化。

现在,我想在 Katalon Studio 脚本中执行此操作:

TestObject myTestObject = new TestObject('My test object').addProperty('css', ConditionType.EQUALS, '.some-class-name img')
WebUI.waitForElementAttributeValue(myTestObject, 'src', 'images/green.gif', 30)

但是,Katalon 将看到具有全名的图像的 'src' 属性,因此这将在 30 秒后超时。

有没有办法等到属性包含某个字符串?

WebUI.waitForElementAttributeValue 方法似乎不支持正则表达式。

但是您可以直接在 css 中添加该条件并使用等待直到元素出现。

TestObject myTestObject = new TestObject('My test object').addProperty('css', ConditionType.EQUALS, ".some-class-name img[src='images/green.gif']")
WebUI.waitForElementPresent(myTestObject, 30)

或简称为

TestObject myTestObject = new TestObject('My test object').addProperty('css', ConditionType.EQUALS, ".some-class-name img[src*='green']")
WebUI.waitForElementPresent(myTestObject, 30)