Python获取Web节点颜色并判断

获取web中的某个节点的css属性,获取颜色,判断颜色是否为指定颜色。(rgb转16进制)。

Python中有时候我们无法判断按钮是否被选中,但是可以通过颜色来判断该按钮是否已经被选中。

我们通过value_of_css_property 来获取到的颜色是rgb数据,需要把它转换成16进制字符串,再进行判断。

例如:我们来获取百度页面的“百度一下”的背景颜色,并判断是否为#3385FF

 

 

 

1.首选获取这个按钮的rgb值

driver.get("http://www.baidu.com")
link = driver.find_element_by_id("su")
#获取到gba值
gbaColor = link.value_of_css_property("background")
print (gbaColor)

#打印出来的值是 rgb(51,133,255)
#这样我们是不好判断的,需要把它转换成16进制: #3385FF
2.rgb转16进制字符串( rgb(51,133,255) >> "#3385FF" )

##导入re
import re

def RGB_to_Hex(rgb): ###rgb转16进制
r,g,b = map(int, re.search(
r'rgb\((\d+),\s*(\d+),\s*(\d+)', rgb).groups())
rgbstrs = '#'
rgbstrs += str(hex(r))[-2:].replace('x','0').upper()
rgbstrs += str(hex(g))[-2:].replace('x','0').upper()
rgbstrs += str(hex(b))[-2:].replace('x','0').upper()
return rgbstrs

 

from selenium import webdriver
import time
import re
driver = webdriver.Chrome()

#rgb转16进制
def RGB_to_Hex(rgb):
r,g,b = map(int, re.search(
r'rgb\((\d+),\s*(\d+),\s*(\d+)', rgb).groups())
rgbstrs = '#'
rgbstrs += str(hex(r))[-2:].replace('x','0').upper()
rgbstrs += str(hex(g))[-2:].replace('x','0').upper()
rgbstrs += str(hex(b))[-2:].replace('x','0').upper()
return rgbstrs

driver.get("http://www.baidu.com")
link = driver.find_element_by_id("su")
colora = link.value_of_css_property("background")
print (colora)

#调用函数获取16进制字符串
color = RGB_to_Hex(colora)

if color=="#3385FF":
print("颜色比对成功")
else:
print("颜色比对失败")
打印结果:

 

 


————————————————
版权声明:本文为CSDN博主「生息成长程序」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36237672/article/details/105412885

posted @ 2022-01-31 18:00  rmticocean  阅读(257)  评论(0)    收藏  举报