获取元素颜色会在硒javascript中返回错误的颜色

时间:2019-06-20 21:14:39

标签: javascript css selenium

元素的颜色根据其中一个值而变化,我需要检查该颜色。我是否已将ID分配给正确的元素?

enter image description here

还有一个我可以在此处添加ID的元素:

enter image description here

但是似乎有相同的问题。

    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")

1 个答案:

答案 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属性来定位元素。)