gpt4 book ai didi

java - 如何在断言 Selenium getCssValue ("background"返回的背景色 rgb(255,255,255) 时将#ffffff 转换为#fff 或将#fff 转换为#ffffff

转载 作者:搜寻专家 更新时间:2023-10-31 22:36:22 25 4
gpt4 key购买 nike

如何将 #ffffff 转换为 #fff 或将 #fff 转换为 #ffffff 以进行断言?

我正在使用 getCssValue("background")Selenium 返回 rgb(255, 255, 255) 我可以拆分成:

  • r -> 255
  • g -> 255
  • b -> 255

下面一行代码:

String hex = String.format("#%02x%02x%02x", r, g, b);

rgb 转换为 hex 并给出如下输出:

#ffffff

但是从控制台中,背景被提取为#fff

fff

那么理想的方法是:

  • #ffffff转换为#fff
  • #fff转换为#ffffff

我经历过一些相关的讨论:

但是我的测试失败了,需要转换。有什么建议吗?

最佳答案

您可以将 replaceAll 与正则表达式一起使用,以查找所有三个部分都使用相同数字的情况:

static String getHex(int r, int g, int b) {
return String.format("#%02x%02x%02x", r, g, b).replaceAll("^#([a-fA-F])\\1([a-fA-F])\\2([a-fA-F])\\3$", "#$1$2$3");
}

它会查找以 # 开头,后跟三对匹配的十六进制数字的字符串,并仅用短形式替换它们。 (我想我可以在你的特定示例中使用[a-f]而不是[a-fA-F],因为你知道你'只会变得小写,但是......)

完整示例(在 Ideone 上):

public class Example {
public static void main(String[] args) {
System.out.println(getHex(255, 255, 255)); // #fff
System.out.println(getHex(255, 240, 255)); // #fff0ff
}

static String getHex(int r, int g, int b) {
return String.format("#%02x%02x%02x", r, g, b).replaceAll("^#([a-fA-F])\\1([a-fA-F])\\2([a-fA-F])\\3$", "#$1$2$3");
}
}

关于java - 如何在断言 Selenium getCssValue ("background"返回的背景色 rgb(255,255,255) 时将#ffffff 转换为#fff 或将#fff 转换为#ffffff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54767206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com