Создание Xpath для динамического выпадающего списка

Привет. Помогите второй день не могу победить, нужно написать локатор для выпадающего списка городов. Ввести город\выпадающий список\кликнуть нужный город. Screenshot by Lightshot
Пробовал xpath=//*a[@(text(),‘Краснодар’)] не находит

Приведенный локатор в принципе нерабочий.
Попробуйте сначала основы формирования локаторов через xpath почитать. На это потребуется уж точно меньше времени, чем два дня…

3 лайка

Краснодар это текст элемента span. А вам нужен его родитель - элемент a. Как получить родителя описано вот тут - xml - XPath: Get parent node from child node - Stack Overflow
Как найти элемент по содержимому в нем тексту - xml - XPath to return only elements containing the text, and not its parents - Stack Overflow

1 лайк

Вы бы ссылку на сайт привели что ли…
Может так - //span[text()=‘Краснодар’]/parent::a[contains(@class, ‘point_info’)]

Не стоит вносить “информационный шум” в локаторы - span|axes|a не несут смысловой нагрузки:
//*[contains(@class, 'point_info') and contains(string(), 'Краснодар')]

Спасибо всем за помощь

page.selectByText(“select-lang”, user.language, TypeSelectorLocator.ID);

public void selectByText(String name, String text, TypeSelectorLocator locator) {
By by = getBy(locator, name);
if (by == null) {
throw new Error("not found locator: " + locator.toString());
}

    Select element = new Select(webDriver.findElement(by));
    element.selectByValue(text);
}

в данном случае для меня он выбирает с списка языков нужный… возможно вам подойдёт.

Где вы с в сорсах топик-стартера <Select> увидели?

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

Читайте… читайте…думайте… анализируйте… думайте… отвечайте…
https://github.com/SeleniumHQ/selenium/blob/master/java/client/src/org/openqa/selenium/support/ui/Select.java#L46

1 лайк

так почему же вы не предложыли нормального решения…,? как то у вас не очень с Читайте… читайте…думайте… анализируйте… думайте… отвечайте…

Я вот до сих пор не понял вопроса? Автор не хочет сначала кликнуть на таб, а потом кликнуть на город? Или юзер как-то по другому делает?

Как бы ответ был дан, и принят топик-стартером два дня назад.