如何使用Selenium获取元素颜色

时间:2014-04-22 13:08:07

标签: java html css selenium selenium-webdriver

我想检查html页面中元素的颜色。 使用javascript设置此元素的颜色,查看图像enter image description here

具有div-id" Ab_banco_M1T1_switch"的元素可以假设4个值,当然只根据" val"的值显示其中一个值。变量。 val变量是以某种方式从服务器设置的,它表示脚本每隔X秒轮询一次服务器并更新val的值。

我试图获得元素的颜色如下:

WebElement element = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("Ab_banco_M1T1_switch")));

element.getAttribute("background")
element.getAttribute("style")
element.getAttribute("background-color") 
element.getCssValue("style")
element.getCssValue("color")

没有成功,他们返回" null"或页面的backgorund颜色。

获得颜色的唯一方法是使用Xpath     /html/body/div/div[2]/div[2]/div[2]/div/div/div/div[3]/div (for red, if I want the green /html/body/div/div[2]/div[2]/div[2]/div/div/div/div[2]/div)

但这不是我想要的。实际上,Xpath会对元素进行本地化,但它并不能告诉我显示的颜色是红色还是其他颜色,我只能通过查看网页来了解它。

换句话说,我想像Firebug那样访问当前显示的颜色,看看右侧的面板,你可以看到element.style ->background-Color = red

当我调用元素getCssCValue("background-color")时,我得到#body_right_div的backgorund颜色。

提前谢谢你。

4 个答案:

答案 0 :(得分:8)

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

element.getCssValue("background-color");

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

element.getCssValue("color");

例如,如果您想获得"登录"的背景​​和文字颜色。按钮为LinkedIn,代码如下:

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

答案 1 :(得分:4)

试试这个,对我来说很完美:

import org.openqa.selenium.support.Color;

String color = driver.findElement(By.xpath("xpath_value")).getCssValue("color");
System.out.println(color);
String hex = Color.fromString(color).asHex();
System.out.println(hex);

因此,您可以使用getCssValue("color");getCssValue("background-color");获取颜色。 但是,这将是RGB,因此您需要转换为十六进制。使用十六进制代码,您可以比较该值并将其打印出来,这样您就可以看到每个getCssValue后得到的内容。

答案 2 :(得分:0)

使用XPath,您可以尝试按属性搜索。例如//div[@style='background: red']。如果你想得到颜色然后CSS我将使用方法getCSSValue()

答案 3 :(得分:0)

尝试以下代码

public String ColorVerify(String cssSelector, String cssValue)
{
    /* This method used to verify color code*/
    WebElement target = driver.findElement(By.cssSelector(cssSelector));
    String colorCode= target.getCssValue(cssValue);
    String hexacolor = Color.fromString(colorCode).asHex();
    return hexacolor;   
}