元素的颜色会根据其中一个值而变化,我需要检查该颜色。我是否将 ID 分配给了正确的元素?
还有一个元素我可以在这里添加一个 ID:
但它似乎有同样的问题。
const elmRating = await driver.wait(until.elementLocated(By.id("overallRating-20002")),4000).getText()
const elmColor = await driver.wait(until.elementLocated(By.id('colorOf-20002'))).getCssValue("color")
console.log(elmColor)
打印出:
rgba(60, 72, 88, 1)
这不是正确的(绿色)颜色我尝试将其更改为(返回
rgba(0, 0, 0, 0)
) const elmColor = await driver.wait(until.elementLocated(By.id('colorOf-20002'))).getCssValue("background-color")
这将返回
NULL
const elmColor = await driver.wait(until.elementLocated(By.id('colorOf-20002'))).getAttribute("background-color")
最佳答案
我对 Selenium 没有太多经验,但让我们尝试一下。
一、getCssValue
我相信是正确的使用方法;它将返回 CSS 属性的值,而 getAttribute
将返回 HTML 属性的值(例如 "foo"
中的 <div id="foo">
); getAttribute
正在返回 null
因为没有这样的属性可以返回。
现在。一方面,您似乎正试图在这一行中获取元素的背景颜色:
const elmColor = await driver
.wait(until.elementLocated(By.id('colorOf-20002')))
.getCssValue("color")
但是
color
属性指定文本的颜色,而不是背景。 (有趣的是,它返回的颜色与带有大于号的圆形元素的颜色相匹配。)在我看来,当您定位 div 时,这条线应该可以工作(看起来 h5 标记不太可能是要定位的正确元素):
const elmColor = await driver
.wait(until.elementLocated(By.id('colorOf-20002')))
.getCssValue("background-color")
您所做的调用返回一个带有零 alpha channel 的 RGBA 值这一事实意味着它针对的是具有透明背景的元素,所以我猜想在您将 ID 附加到
h5
后调用了此特定行。元素。tl;博士:我想如果你把 ID 放回
div
上就可以了。而你使用 background-color
而不是 color
. (关于该 ID 的说明:出于测试目的,通常更适合使用数据属性来定位元素。)
关于javascript - 获取元素颜色在 selenium javascript 中返回错误的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56693954/