我正在使用Robot Framework& amp;编写自动化测试脚本。 Selenium2Library用于测试我们的Web应用程序(以.txt
格式)。我的一个测试用例涉及检查HTML标记的CSS样式属性。
Robot Framework中是否有任何特定的关键字来获取html元素的CSS样式属性?
这是我的测试场景:
<div id="check_style" style="width:20px;height:20px;background-color:#ffcc00;"></div>
现在,我必须将此特定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"]
, 但没有奏效! )
答案 0 :(得分:4)
您可以使用Selenium2Library Get Element Attribute关键字来获取样式属性:
import psutil
def pid_find(process_name):
for proc in psutil.process_iter():
try:
if proc.name == process_name:
return proc.pid
except psutil.AccessDenied:
pass
raise Exception("Process %s not found" % process_name)
print pid_find("bash")
然后,您可以使用正则表达式查找背景颜色属性或执行一些其他解析。后者在python中比使用机器人关键字更容易。
例如,如果您了解正则表达式,则以下内容可能会起作用。当然,您可能想要添加一些防弹。
| | ${style}= | Get element attribute | id=check_style@style
注意:您可能无法获得与原始HTML中相同的文字值。例如,即使HTML中的颜色为| | ${style}= | get element attribute | id=check_style@style
| | ${color}= | evaluate | re.search("background-color: *(.*?);", '''${style}''').group(1) | re
,我的计算机${color}
也会以rgb(255, 204, 0)
的形式返回。
答案 1 :(得分:0)
在机器人框架中使用javascript获取css值。 link here
# Get element using Xpath in JavaScript.
${element}= Set Variable document.evaluate("${xpath_locator}", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue
# Get css attribute value using getComputedStyle()
${attribute_value}= Execute Javascript return window.getComputedStyle(${element},null).getPropertyValue('${css_attribute}');
Log ${attribute_value}
答案 2 :(得分:0)
无论出于什么原因,我在使它工作时遇到了很多麻烦。我认为这是因为我的CSS是在外部文件中定义的(因此拉动style
属性为空)。
还请注意,RF现在已将“获取元素属性”的定义更改为采用两个参数,而不是一个。
我想通过一堆搜索找到的很棒的解决方案-我在How to get the css style of text-overflow in robot framework
*** Keywords ***
Get CSS Property Value
[Documentation]
... Get the CSS property value of an Element.
...
... This keyword retrieves the CSS property value of an element. The element
... is retrieved using the locator.
...
... Arguments:
... - locator (string) any Selenium Library supported locator xpath/css/id etc.
... - property_name (string) the name of the css property for which the value is returned.
...
... Returns (string) returns the string value of the given css attribute or fails.
...
[Arguments] ${locator} ${attribute name}
${css}= Get WebElement ${locator}
${prop_val}= Call Method ${css} value_of_css_property ${attribute name}
[Return] ${prop_val}
之后我可以简单地运行
${style}= Get CSS Property Value class:logo background-image
并进行纯文本比较。将任何CSS值替换为背景图像,并玩得开心!