需要将按钮颜色转换成人类可读的格式,下面的代码返回 rgba 值
这是我的代码:
WebElement findbuttonColor = driver.findElement(By.id("color"));
String color = findbuttonColor.getCssValue("background-color");
System.out.println("Button color is :"+color);
我不确定人类可读的格式是什么意思,可以为元素设置数百万种颜色。并不是所有的名字都像green, blue, red, etc.
你得到rgba中的值是因为设计者设置了rgba中的值。你可以做的是定义一个结构,将一些众所周知的颜色代码映射到 rgb(甚至不考虑 alpha 通道),这样你就可以从该映射中选择“人类可读”的格式。
这里是可能提供线索的例子:Convert RGB values to color name
您可以通过以下方式获取元素颜色(元素的背景颜色):
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);
现在回答为时已晚,但您需要像Github上的这个存储库这样的东西来将rgb值转换为颜色名称。
既然有1600万种颜色,
为了找到两种颜色之间的距离,一种简单的方法是找到三维空间中两个点之间的距离。可以假设颜色的三个分量是点的 3D 坐标。有关计算两种颜色之间距离的更多方法,请查看 Stackoverflow 上的这个问题。