如何将 rgba 值转换为人类可读的文本

问题描述 投票:0回答:4

需要将按钮颜色转换成人类可读的格式,下面的代码返回 rgba 值

这是我的代码:

WebElement findbuttonColor = driver.findElement(By.id("color"));
String color = findbuttonColor.getCssValue("background-color"); 
System.out.println("Button color is :"+color);
css selenium automation background-color rgba
4个回答
0
投票

我不确定人类可读的格式是什么意思,可以为元素设置数百万种颜色。并不是所有的名字都像green, blue, red, etc.

你得到rgba中的值是因为设计者设置了rgba中的值。你可以做的是定义一个结构,将一些众所周知的颜色代码映射到 rgb(甚至不考虑 alpha 通道),这样你就可以从该映射中选择“人类可读”的格式。

这里是可能提供线索的例子:Convert RGB values to color name


0
投票

您可以通过以下方式获取元素颜色(元素的背景颜色):

element.getCssValue("background-color");

您可以通过以下方式获取元素文本/标题颜色:

element.getCssValue("color");

比如想获取领英“登录”按钮的背景和文字颜色,代码如下:

driver.get("https://www.amazon.com/");
String buttonColor = driver.findElement(By.id("searchDropdownBox")).getCssValue("background-color");
String buttonTextColor = driver.findElement(By.id("searchDropdownBox")).getCssValue("color");
System.out.println("Button color: " + buttonColor);
System.out.println("Text color " + buttonTextColor);

0
投票

当你执行 getCssValue() 时,它返回 rgb 值。您可以使用下面的方法将其转换为十六进制 backgroundColor = element.getCssValue("背景颜色"); Color.fromString(backgroundColor).asHex();

这将返回十六进制代码,类似于“#def3ff”。您稍后可以将它与您的 css 中的可用十六进制代码进行比较。

Assert.assertEquals(def3ff, ExpectedHexCode);

注意: 您可以通过检查元素 > 样式来获取元素的十六进制代码。有关详细信息,请参阅下面的屏幕截图 how to get Hexcodefrom 谢谢你,


0
投票

现在回答为时已晚,但您需要像Github上的这个存储库这样的东西来将rgb值转换为颜色名称。

既然有1600万种颜色,

  1. 你可以有一个已知颜色的列表,包括它们的名称和 rgb 值。
  2. 您可以找到最接近您输入颜色的颜色并返回其名称。

为了找到两种颜色之间的距离,一种简单的方法是找到三维空间中两个点之间的距离。可以假设颜色的三个分量是点的 3D 坐标。有关计算两种颜色之间距离的更多方法,请查看 Stackoverflow 上的这个问题

© www.soinside.com 2019 - 2024. All rights reserved.