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

Выпадающий список - не происходит клик по элементу списка


(Andrey Bzhestovskyy) #1

При открытии дропдауна - список на миг открывается, но клик по элементу не происходит. Подскажите, в чем может быть ошибка?

Мой код

    Actions action = new Actions(driver);
    WebElement toolsMenu = driver.findElements(By.cssSelector(".v9-main-item.v9_sub")).get(3);
    action.moveToElement(toolsMenu).build().perform(); // открывается дропдаун

    WebElement toolMenuItemReviews = driver.findElement(By.cssSelector("li a:contains('Reviews')"));
    toolMenuItemReviews.click();// хочу кликнуть на элемент списка.

Дропдаун

Селектор элемента списка

Ошибка в IDEA


(Виталий Коряков) #2

Возможно клик происходит быстрее чем прогружаются элементы списка.
Проставьте ожидания.


(Bohdan Harasym) #3

Select oSelect = new Select(driver.findElement(By.id("###")));

oSelect.selectByVisibleText("*******");


(Andrey Bzhestovskyy) #4

после того, как открывается дропдаун, добавляю строчку

wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(“li a:contains(‘Reviews’)”)));

но теперь выбрасывает timeoutException, должно ждать 5 сек, а закрывается в долю секунды

код для wait

wait = new WebDriverWait(driver,5);


(Oleksii Komar) #5

Табом проклацайте. И энтер нажмите.


(Crazyk2) #6

Разве CSS может содержать :contains?
У меня FirePath ругается на синаксис такого локатора.
Вот обсуждение

В вашем случае лучше заменить на XPath или поменять логику поиска

WebElement toolMenuItemReviews = driver.findElements(By.cssSelector("li a"))
.stream()
.filter(element -> element.getText().contains("Reviews"))
.findOne()
.orElseThrow(()-> new IllegalStateException("Бла бла не найдено"));

(Andrey Bzhestovskyy) #7

Действительно, тут я использовал Jquary не к месту, и из-за этого не находило элемент. Спасибо за подсказку