【问题标题】:How to convert an object of type String "rgba(105, 54, 221, 1)" to Color in Java-Selenium? [duplicate]java - 如何在Java-Selenium中将String“rgba(105,54,221,1)”类型的对象转换为Color? [复制]
【发布时间】:2022-01-06 14:22:29
【问题描述】:

在我使用 getCssValue() 获得 WebElement 颜色的 css 值后,我最终得到了一个具有以下格式的字符串:“rgba(105, 54, 221, 1)”。我需要将其转换为 Color 类型的对象,以便之后能够将其转换为十六进制,但我得到一个 NumberFormatException 输入字符串:“rgba(105, 54, 221, 1)" 尝试使用 Integer.parseInt 方法时。

我的代码是:

String updatedColorAsString = header.getCssValue("color"); //resulting string is "rgba(105, 54, 221, 1)"
Color updatedColor = new Color(Integer.parseInt(updatedColorAsString));

我是 Java-Selenium 的新手,我不知道如何使用该字符串才能正确地将其转换为 rgba 颜色,我非常感谢您对此提供任何帮助:D

【问题讨论】:

标签: java string selenium-webdriver colors type-conversion


【解决方案1】:

获取颜色的方式有更多选择。

注意两种不同的颜色数据类型: org.openqa.selenium.support.Colorjava.awt.Color

Color color = Color.fromString(cssColorString); // for selenium Color

String[] rgba = cssColorString.replace("rgba(", "").replace(")", "").split(", ");
int r = Integer.parseInt(rgba[0]);
int g = Integer.parseInt(rgba[1]);
int b = Integer.parseInt(rgba[2]);
int a = Integer.parseInt(rgba[3]);
Color color2 = new Color(r, g, b, a); // for any of the two classes

完整代码示例:

package selenium;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.Color;

public class RaduRaspopa extends WebDriverSetup {

    public static void main(String[] args) {
        
        WebDriver driver = startChromeDriver(); // wrapped driver init
        driver.get("https://www.toolsqa.com/");
        
        WebElement advertisementImage = driver.findElement(By.id("advertisement-image"));
        String cssColorString = advertisementImage.getCssValue("color");

        Color color = Color.fromString(cssColorString);
        System.out.println(color.asHex());
        
        String[] rgba = cssColorString.replace("rgba(", "").replace(")", "").split(", ");
        int r = Integer.parseInt(rgba[0]);
        int g = Integer.parseInt(rgba[1]);
        int b = Integer.parseInt(rgba[2]);
        int a = Integer.parseInt(rgba[3]);
        
        Color color2 = new Color(r, g, b, a);
        System.out.println(color2.asHex());
        
        driver.quit();
    }
    
}

输出:

Starting ChromeDriver 96.0.4664.45 (76e4c1bb2ab4671b8beba3444e61c0f17584b2fc-refs/branch-heads/4664@{#947}) on port 25710
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
Led 06, 2022 3:49:31 ODP. org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
#007bff
#007bff

【讨论】:

  • 非常感谢,它就像一个魅力
猜你喜欢
  • 2012-09-15
  • 1970-01-01
  • 2015-08-30
  • 2019-07-23
  • 1970-01-01
  • 2012-01-19
  • 2018-04-09
  • 1970-01-01
  • 2018-01-28
相关资源
最近更新 更多