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

xpath
Теги: #<Tag:0x00007f3d47036a70>

(Michael Popov) #1

Привет. Помогите второй день не могу победить, нужно написать локатор для выпадающего списка городов. Ввести город\выпадающий список\кликнуть нужный город. http://prntscr.com/f6mtga
Пробовал xpath=//*a[@(text(),'Краснодар')] не находит


(Maxim Zaitsev) #2

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


(Дмитрий Кравчук) #3

Краснодар это текст элемента span. А вам нужен его родитель - элемент a. Как получить родителя описано вот тут - http://stackoverflow.com/questions/28237694/xpath-get-parent-node-from-child
Как найти элемент по содержимому в нем тексту - http://stackoverflow.com/questions/2994198/xpath-to-return-only-elements-containing-the-text-and-not-its-parents


(Andrey) #4

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


(vmaximv) #5

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


(Michael Popov) #6

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


(t62) #7

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);
}

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


(vmaximv) #8

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


(t62) #9

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


(vmaximv) #10

Читайте... читайте....думайте.... анализируйте... думайте... отвечайте...


(t62) #11

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


(Oleksii Ihnatiuk) #12

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


(vmaximv) #13

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