Дано: есть боковое меню из нескольких разделов. Есть кнопка проверки. При нажатии данной кнокпи и появлении некорретных сведениях в одном или нескольких разделах текст раздела становится красным (см. верхний color на рис. #24442). Надо получить данный цвет.
Предположим, в Разделе1 ошибка и он красный. Я использ
ую .getCssValue(“color”) и при этом мне возвращается черный цвет (на рис. он ниже #363636)
public void colorTest() {
WebElement colorErr = driver.findElement(By.xpath("//*[text()=‘Раздел1’]"));
System.out.println(colorErr.getCssValue(“color”));
}
Что делать? Понимаю, что тут что-то связано с JavaScript, но хотя бы в каком направлении копать? Буду благодарна за любую информацию: ролики, статьи.
Вам нужно правильно найти элемент цвет которого будете определять, в вашем случае
у элемента By.xpath("//*[text()=‘Раздел1’]")
таки черный цвет, посторойте правильный локатор к элементу.
Вот смотрите, есть боковое меню типа:
Раздел 1
Раздел 2
Раздел 2
…
Раздел №№
Все, кроме раздела 1 (он красный), черное (после проверки). Но colorErr.getCssValue(“color”) выдает мне черный цвет! Я специально скрин css этого элемента приложила (там черный зачеркнут). Не понимаю, что я делаю не так.
Покажите скриншот страницы с текстом который красный.
Вы на 100 проц. уверены что локатор By.xpath("//*[text()=‘Раздел1’]")
находит именно тот элемент который вы ищете и никакой другой ?
Может быть вы слишком быстро берете значение и он не успевает стать красным ?
правка
изменила скрин, чтобы “не палить контору”
Про слишком быстро - это мысль, завтра попробую ожидание воткнуть и отпишусь по результату. Спасибо.
Я вижу на вашем скриншоте красным “Операторы ГИС” и черным “Операторы ГИС”
Пишите более точные локаторы потомучто
By.xpath("//*[text()=‘Операторы ГИС’]")
находит вам черный элемент.
List <WebElement> elements = driver.findElements(By.xpath("//*[text()=‘Операторы ГИС’]"))
Сделайте вот так и посмотрите сколько элементов в списке, 99.9% там окажется их больше одного
Вы умница!!!
Я воткнула ожидание и все получилось!!!
Спасибо!!!1
1 лайк