У меня нет большого опыта работы с Selenium, но давайте попробуем.
Во-первых, getCssValue
, я считаю, правильный метод для использования; он вернет значение свойства CSS, тогда как getAttribute
вернет значение атрибута HTML (например, "foo"
in <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")
Тот факт, что сделанный вами вызов вернул значение RGBA с обнуленным альфа-каналом, означает, что он нацелен на элемент с прозрачным фоном, поэтому я предполагаю, что эта конкретная строка была вызвана после того, как вы прикрепили свой идентификатор к h5
element.
tl; dr: Я думаю, это сработает, если вы вернете ID на div
и используете background-color
вместо color
. (Примечание по этому идентификатору: для целей тестирования обычно более целесообразно использовать атрибут данных для целевых элементов.)