如何编写Robot Framework适配Browser库的获取CSS属性关键字
问题根因
直接把Get WebElement替换为Get Element不生效的核心原因是两个库的元素操作逻辑完全不兼容:
- SeleniumLibrary返回的是Selenium原生WebElement对象,支持通过
Call Method直接调用对象自带的value_of_css_property方法读取CSS值 - Browser库基于Playwright封装,返回的是库自定义的元素句柄,不存在Selenium WebElement的原生方法,不能直接复用原来的
Call Method调用逻辑。
适配Browser库的可直接用版本
替换原关键字定义即可,原有调用时的传参顺序、使用方式完全不需要修改:
*** Keywords *** Get CSS Property Value [Documentation] ... 获取元素的CSS属性值 ... ... 读取指定定位器对应元素的目标CSS计算属性值 ... ... 参数: ... - locator (string) 支持所有Browser库兼容的定位器语法,含xpath、css、id、role、文本定位等 ... - property_name (string) 要读取的CSS属性名,例如color、font-size、display ... ... 返回值 (string) 读取到的CSS属性字符串值,定位失败或属性不存在时直接抛出异常 ... [Arguments] ${locator} ${attribute name} ${prop_val}= Get CSS Value ${locator} ${attribute name} [Return] ${prop_val}
低版本Browser库兼容方案
如果你使用的Browser库版本较旧,没有内置Get CSS Value关键字,把关键字执行行替换为JS执行逻辑即可,效果完全一致:
${prop_val}= Execute JavaScript (element, cssProp) => window.getComputedStyle(element).getPropertyValue(cssProp) ${locator} ${attribute name}
注意事项
- SeleniumLibrary和Browser库的元素对象、操作体系完全独立,不要跨库混用元素操作关键字
- 改写后的关键字兼容驼峰(如
backgroundColor)和短横线(如background-color)两种CSS属性名写法,不需要额外做格式转换 - 支持所有Browser库(Playwright)原生定位语法,比原Selenium版本支持的定位维度更丰富
内容的提问来源于stack exchange,提问作者Anisha
相关产品推荐
相关产品推荐

