как достучаться до элементов без id (java)

Сначала тебе нужно кликнуть на

//ul[@class='select2-results__options']
Потом на
//li[@class='select2-results__option' and text()=' твой текст']
ну или просто
//li[text()=' твой текст']`

no such element: Unable to locate element: {"method":"xpath","selector":"//li[text()='3-D конструирование']"}

если так делать

WebElement dis = driver.findElement(By.cssSelector("ul.select2-selection__rendered"));
        dis.click();
        // WebDriverWait wait = new WebDriverWait(driver, 10);
        // wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='select2-discipline-results']/li/[2]"))).click();
        driver.findElement(By.xpath("//ul[@class='select2-results__options']")).click();

        driver.findElement(By.xpath("//li[text()='3-D конструирование']")).click();

В дев тулзах оно подсвечивает локатор? Может он меняется после нажатия на ul ?

на ul нажало нормально?
может там iframe какой-то?

На ul то нажимает
список вываливается, а вот в списке не находит элемент

вот код мой

WebElement dis = driver.findElement(By.cssSelector("ul.select2-selection__rendered"));
        dis.click();
        // WebDriverWait wait = new WebDriverWait(driver, 10);
        // wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='select2-discipline-results']/li/[2]"))).click();
        //driver.findElement(By.xpath("//ul[@class='select2-results-results']")).click();

        driver.findElement(By.xpath("//li[text()='3-D конструирование']")).click();

В таком состоянии остается окно браузера

no such element: Unable to locate element: {"method":"xpath","selector":"//li[text()='API-программирование']"}

Там получается что когда просто кликаешь в поле то в панели Elements отображается только input а если кликнуть на эту стрелочку в углу которая показывает html при наведении, то он этот список показывает li

Ну так кликай тогда на стрелочку и используй тото локатор что я дал выше)

Я пробовал уже ваши варианты, они не работают …

proof где что х-пас правильный

  • скриншот хропас плагина в студию

Весь код в топике…
Что за плагин?

Товарищ скинул не весь скрин дома, по этому у него не открывается список при первом нажатии.

Попробуйте сперва кликнуть //ul[@class=‘select2-selection__rendered’] и потом //li[text()=’ твой текст’]`

Здесь вроде я так и делал

1 строка в гугле
https://www.google.com/search?ei=C_CQXODpO5LTkwXv_6ugDw&q=chropath&oq=cropath&gs_l=psy-ab.1.0.0i10l10.5493.13678..16856...12.0..0.490.1927.10j3j1j0j1......0....1..gws-wiz.....6..35i39j0j0i5i10i30i42.8KoHrlUOj7Y

SelenideElement element = $(By.xpath("//ul[@class=‘select2-selection__rendered’]")); element.click();
SelenideElement element2 = $(By.xpath("//li[text()=‘3-D конструирование’]")); element2.click();

Быстро на коленке написал и пока сработало

1 лайк

@Gallagher как говорил один лётчик:

И опыт, сын ошибок трудных,
И гений, парадоксов друг

Пробуйте поработать самостоятельно - это лучший способ наработать необходимые навыки. Прочитать недостаточно. Нужно тренировать поиск информации, чтение документации (javadoc’и), исходного кода и создание простых примитивных программ для проверки гипотез (прототипирование).

2 лайка

Спасибо… Завтра протестирую …

Классная штучка, спасибо!

Не работает этот метод тоже

System.setProperty("webdriver.chrome.driver", "C:/chromedriver/chromedriver.exe");
ChromeDriver driver = new ChromeDriver();
driver.get("https://biblio-online.ru/register/create#professor");
WebElement element = driver.findElement(By.xpath("//ul[@class='select2-selection__rendered']"));
element.click();
WebElement element2 = driver.findElement(By.xpath("//li[text()='3-D конструирование']"));
element2.click();