如何找到十六进制格式的webelement的背景颜色? 以我目前的硒webdriver的Python代码它返回的RGB格式的背景色。
这是我在看html元素
div class="bar" style="background-color: #DD514C; background-image: -moz-linear-gradient(center top , #EE5F5B, #C43C35); background-image: -webkit-linear-gradient(top , #EE5F5B, #C43C35); background-image: -ms-linear-gradient(top , #EE5F5B, #C43C35); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EE5F5B, endColorstr=#C43C35, GradientType=0); background-repeat: repeat-x; color: #ffffff; width: 11.5%"
我webdriver的Python代码是:
find_element_by_class_name("bar").get_attribute("style")
它返回与RGB格式的颜色风格。 我想特别让背景颜色以十六进制格式,这样我可以与我的预期值进行比较。 现在我正在以下的输出:
background-color: rgb(221, 81, 76); background-image: -moz-linear-gradient(center top , rgb(238, 95, 91), rgb(196, 60, 53)); background-repeat: repeat-x; color: rgb(255, 255, 255); width: 11.5%;
您正在寻找value_of_css_property('background-color')
rgb = find_element_by_class_name("bar").value_of_css_property('background-color')
然而,这将返回字符串rgb(221, 81, 76)
为了得到它的十六进制值,您可以使用@ unutbu的回答:
import re
...
rgb = find_element_by_class_name("bar").value_of_css_property('background-color')
r,g,b = map(int, re.search(
r'rgb\((\d+),\s*(\d+),\s*(\d+)', rgb).groups())
color = '#%02x%02x%02x' % (r, g, b)
和十六进制color
是字符串#dd514c
。
作为回报格式的元组相匹配,这是不使用“重新”,其中的回报是一个“RGBA”字符串实现:
import ast
rgba = element.value_of_css_property("background-color")
r, g, b, alpha = ast.literal_eval(rgba.strip("rgba"))
hex_value = '#%02x%02x%02x' % (r, g, b)
return hex_value, alpha
凡串“RGB”简单地忽略“阿尔法”
import ast
rgb = element.value_of_css_property("background-color")
r, g, b = ast.literal_eval(rgb.strip("rgb"))
hex_value = '#%02x%02x%02x' % (r, g, b)
return hex_value
由于原来的问题被提出的优选方法是现在使用硒颜色支持模块:
一个简单的指南是在这里
import re
# style = find_element_by_class_name("bar").get_attribute("style")
style = 'background-color: rgb(221, 81, 76); background-image: -moz-linear-gradient(center top , rgb(238, 95, 91), rgb(196, 60, 53)); background-repeat: repeat-x; color: rgb(255, 255, 255); width: 11.5%;'
r,g,b = map(int, re.search(
r'background-color: rgb\((\d+),\s*(\d+),\s*(\d+)\)', style).groups())
print('{:X}{:X}{:X}'.format(r, g, b))
产量
DD514C
要转换的颜色,你可以直接使用硒的颜色类:
from selenium.webdriver.support.color import Color
rgb = find_element_by_class_name("bar").value_of_css_property('background-color')
hex = Color.from_string(rgb).hex
硒文档