Selenium WebDriver获得边框颜色

Mru*_*sar 9 css java selenium extjs selenium-webdriver

大家好我想尝试使用getCssValue方法获取extjs 4.2表单控件文本字段的边框颜色.但我无法取得它.它让我空白.下面是我的代码片段,您可以按原样尝试.

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class TestClass 
{
    public static void main(String[] args) throws InterruptedException
    {
        WebDriver driver=new FirefoxDriver();
        Thread.sleep(2000);
        driver.get("http://docs.sencha.com/extjs/4.2.1/extjs-build/examples/form/dynamic.html");
        Thread.sleep(2000);
        WebElement element=driver.findElement(By.xpath(".//input[@name='first']"));
        Thread.sleep(2000);
        element.sendKeys("");
        element.sendKeys(Keys.TAB);
        Thread.sleep(2000);
        System.out.println("'"+element.getCssValue("border-color")+"'");
    }
}
Run Code Online (Sandbox Code Playgroud)

字段,Xpath和CSS属性以黑色边框突出显示

Webdriver版本2.33(Java绑定)

FF 22

And*_*ean 6

在此输入图像描述 如何获取边框颜色或其他css值in Computed中有所有可以获得的值:

getCssValue("border-bottom-color")
Run Code Online (Sandbox Code Playgroud)

返回rgba(209,219,223,1)并需要清除它(这适用于rgba和rgb):

String rgb[] = driver.findElement(By.name("login[email]")).getCssValue("border-bottom-color").replaceAll("(rgba)|(rgb)|(\\()|(\\s)|(\\))","").split(",");
Run Code Online (Sandbox Code Playgroud)

现在我们的rgb在数组中使用此方法来解析它

String hex = String.format("#%s%s%s", toBrowserHexValue(Integer.parseInt(rgb[0])), toBrowserHexValue(Integer.parseInt(rgb[1])), toBrowserHexValue(Integer.parseInt(rgb[2])));

private static String toBrowserHexValue(int number) {
        StringBuilder builder = new StringBuilder(Integer.toHexString(number & 0xff));
        while (builder.length() < 2) {
            builder.append("0");
        }
        return builder.toString().toUpperCase();
    }
Run Code Online (Sandbox Code Playgroud)

从这个rgba(209,219,223,1 )我们得到了这个#D1DBDF

PS 解析int rgb到hex的源码