使用JQuery和/或Selenium / Webdriver确定页面元素的可见颜色

时间:2011-07-08 10:40:41

标签: jquery html css colors selenium-webdriver

我搜索一种方法来确定页面元素的真实可见颜色。如果我使用JQuery,我可以执行以下操作:

$('#foo').css('background-color');

但是,#foo的背景颜色可能会返回“透明”,即使其中一位父母宣布了彩色背景。那么,我如何获得最终用户可见的正确颜色(包括半透明度/ RGBA)?

更新

我在Firefox 5中使用Selenium2 Java API。也许有一种没有JQuery的方法。涉及屏幕截图可能吗?

更新2

我改写并扩展了问题:Get dominating color of a specific area in an image: Color Query for Web Page Elements

1 个答案:

答案 0 :(得分:4)

您需要遍历树以找到具有background-color的元素,我所做的一种方法就是这样(其中textureEl是您要检查的元素):

bgcolor = $(textureEl).css('background-color'); 
if (isTransparent(bgcolor)){
    $(textureEl).parents().each(function(){
        if (!isTransparent($(this).css('background-color'))){
            bgcolor = $(this).css('background-color');
            return false;
        }

    });
}

function isTransparent(bgcolor){
    return (bgcolor=="transparent" || bgcolor.substring(0,4) == "rgba");
}

但请注意,我的isTransparent函数将任何非100%不透明度值标记为透明,如果您不想这样,则重新定义如何处理rgba颜色。

这当然也没有考虑到background-image,但由于你的问题没有提到它们,我的申请也没需要考虑它们,因此没有任何东西可以检查图像