大家好我想尝试使用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")+"'");
}
}
Webdriver版本2.33(Java绑定)
FF 22
答案 0 :(得分:6)
如何在计算中查看边框颜色或其他css值,您可以获得所有值:
getCssValue("border-bottom-color")
返回rgba(209,219,223,1)并需要清除它(这适用于rgba和rgb):
String rgb[] = driver.findElement(By.name("login[email]")).getCssValue("border-bottom-color").replaceAll("(rgba)|(rgb)|(\\()|(\\s)|(\\))","").split(",");
现在我们的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();
}
从 rgba(209,219,223,1),我们得到了#D1DBDF
答案 1 :(得分:2)
使用Firefox驱动程序似乎存在element.getCssValue(“border-color”)的问题。这是由于不支持速记CSS属性(例如边距,背景,边框)。
对于 Firefox ,您需要输入
System.out.println("'"+element.getCssValue("border-top-color")+"'");
代码将打印出'rgba(207,76,53,1)'
使用 ChromeDriver 获取您的价值。
您当前的代码将打印出'rgb(207,76,53)'
要设置ChromeDriver,您可能需要在声明驱动程序之前添加此行
System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver.exe");
WebDriver driver=new ChromeDriver();
下载ChromeDriver