Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Webdriver +Java. Проблема изменения класса элемента подключая JavaScript?


(Andrey Bzhestovskyy) #1

Добрый день, столкнулся с проблемой, на странице есть шкала оценки со звездочками, которую нужно протестировать, работает так - при наведении курсора к примеру на 3-й звезде все три звездочки выделяются, особенность в том, что можно поставить оценку с точностью в ползвезды:

Как вижу тут есть 2 варианта тестирования звездочек:

  1. Выбор звезды при помощи moveToElement и Click не подходит, так как клик идет на центр элемента и звезда может целиком быть выбрана либо наполовину.

  2. Выделяя звездочку меняя ей класс, при этом меняя класс стоящим перед ней звездочкам при помощи Javascript.

Звездочки могут быть 3 классов:
Пустая звезда: class = “empty”
Полупустая: class = “half_empty”
Полная: class = “full”

Звезду находил через Xpath, в котором находится указатель на порядковый номер звезды:

public void selectStar (final String starNumber){
for (int i = 1; i <= starNumber; i++) {
WebElement star = driver.findElement(By.xpath("//div[@class=…/i[@class=“empty”][" + i + “]”));
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript(“arguments[0].className = ‘full’”, star);
}

В итоге: передавая в метод значение “2”, у меня подкрашиваются 1-я и 3-я звезды.

Если “3” или “4” или “5”
Почему-то 1-я, 3-я и 5-я звезды

Подскажите, чего так может происходить?

(Условие, если передавать в метод к примеру 2.5 звезды пока не принимал во внимания, только целые значения)


(Lev Yarushin) #2

А не пробовали через moveByOffset?
Как тут например:


(Andrey Bzhestovskyy) #3

Большое спасибо, метод со сдвигом от центра элемента то, что мне надо)