元素的颜色根据其中一个值而变化,我需要检查该颜色。我是否已将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")
答案 0 :(得分:0)
我对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通道为零的RGBA值表明,它的目标是具有透明背景的元素,因此,我猜测在将ID附加到{{ 1}}元素。
tl; dr::如果您将ID重新放到h5
上,并且使用div
而不是background-color
,那将是可行的。 (关于该ID的说明:出于测试目的,通常更适合使用data属性来定位元素。)