如何使用Robot Framework查找特定html元素的css样式属性?

Aru*_*ran 5 automated-tests ui-automation robotframework selenium-webdriver

我正在使用Robot Framework和Selenium2Library编写一个自动化测试脚本来测试我们的Web应用程序(.txt格式).我的一个测试用例涉及检查HTML标记的CSS样式属性.

Robot Framework中是否有任何特定的关键字来获取html元素的CSS样式属性?

这是我的测试场景:

<div id="check_style" style="width:20px;height:20px;background-color:#ffcc00;"></div>
Run Code Online (Sandbox Code Playgroud)

现在,我必须将此特定html标记的背景颜色存储到变量中${bg_color}.Robot Framework中是否有任何特定关键字来执行此过程?

你能否提出一个有效的方法来处理这种情况?

我认为我们可以利用这个javascript函数来实现上述目的:

document.getElementById("check_style").style["background-color"]

但是如何利用这个特殊的函数来存储变量背景颜色的值${bg_color} 呢?

(我试图执行${bg_color} = Execute Javascript document.getElementById("check_style").style["background-color"],但没有工作!)

Bry*_*ley 5

您可以使用 Selenium2Library Get Element Attribute关键字来获取样式属性:

| | ${style}= | Get element attribute | id=check_style@style
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用正则表达式来查找背景颜色属性或进行一些额外的解析。后者在 python 中比使用 robots 关键字更容易实现。

例如,如果您了解正则表达式,则类似以下内容可能会起作用。当然,您可能需要添加一些防弹措施。

| | ${style}= | get element attribute | id=check_style@style
| | ${color}= | evaluate | re.search("background-color: *(.*?);", '''${style}''').group(1) | re
Run Code Online (Sandbox Code Playgroud)

注意:您可能无法获得与原始 HTML 中相同的文字值。例如,在我的机器上,${color}即使rgb(255, 204, 0)HTML 中的颜色是#ffcc00.