【发布时间】:2020-11-18 22:40:51
【问题描述】:
我有以下 HTML 文档(这是一个简化的示例):
<!DOCTYPE html>
<html lang="en">
<head>
...
</head>
<body style="background-color: blue;">
<div id="myDiv" style="color: white;">HEY</div>
</body>
</html>
我正在将此文档加载到 chromedriver 并尝试确定元素 #myDiv 的有效背景颜色。有没有办法在 Selenium 中做到这一点?
我尝试过的显而易见的事情:
final WebElement elem = driver.findElement(By.cssSelector("#myDiv"));
System.out.println(elem.getCssValue("background-color"));
// Prints rgba(0, 0, 0, 0), expected rgb(0, 0, 255) or equivalent
我也尝试运行以下 Javascript,但同样,这只会返回在元素本身上设置的属性并忽略父元素的样式:
final WebElement elem = driver.findElement(By.cssSelector("#myDiv"));
final String computedStylePropertyScript = "return window.document.defaultView"
+ ".getComputedStyle(arguments[0],null).getPropertyValue(arguments[1]);";
System.out.println((String) ((JavascriptExecutor) driver).executeScript(computedStylePropertyScript, elem, "background-color");
// Prints rgba(0, 0, 0, 0), expected rgb(0, 0, 255) or equivalent
有没有什么方法可以读取WebElement在硒中的背景(或前景)颜色的有效值?
【问题讨论】:
标签: javascript java css selenium dom