Перейти к содержимому

Фотография

Проблемка с поиском дочерних элементов по xpath


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1 seamcat

seamcat

    Новый участник

  • Members
  • Pip
  • 23 сообщений
  • ФИО:Юлия
  • Город:НН


Отправлено 09 апреля 2014 - 12:32

Приветствую!

Прошлась поиском по темам, но похожей не нашла (может, не так искала?). Поэтому спрошу совета. 

Есть примерно такая cтруктура:

....<div class=" ovh vai" >
    <span class=" nwt db">
             <a  href="..">Some Link Text </a>
    </span>
</div>
....

<div class=" ovh vai" >
    <span class=" nwt db">
             Some Text
    </span>
</div>
...

Таких последовательностей может быть много. Нужно получить текст внутри тегов span, или если внутри спан есть тег a, то нужно получить текст из него.

 

xpath   

.//div/span/child::node()

 в принципе выделяет нужный текст внутри span или тег a. Однако получить список WebElement в данном случае не получится, ибо селениум ругнется, что данный xpath невалидный или не возвращает список элементов )

Поэтому вопрос, как обыграть это все в селениуме или может как-то по-другому xpath написать, так чтоб на результирующих объектах достаточно было только text() вызвать? 


  • 0

#2 Сергей

Сергей

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 245 сообщений
  • Город:Москва

Отправлено 09 апреля 2014 - 13:25

Через JQuery не подойдет?


  • 0

"Если ты хороший плотник и делаешь красивую тумбочку, ты не будешь прибивать сзади фанеру, даже несмотря на то, что задняя часть повернута к стене, и никто ее не видит. Ты будешь хорошо спать ночью, только если тебе удалось воплотить в своем произведении эстетическую красоту и качество." © Стив Джобс


#3 seamcat

seamcat

    Новый участник

  • Members
  • Pip
  • 23 сообщений
  • ФИО:Юлия
  • Город:НН


Отправлено 09 апреля 2014 - 13:27

с ним не работала, но если можно к селениум на Java прикрутить, то попробую


  • 0

#4 Сергей

Сергей

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 245 сообщений
  • Город:Москва

Отправлено 09 апреля 2014 - 13:47

Попробуйте, Вам понравится


  • 0

"Если ты хороший плотник и делаешь красивую тумбочку, ты не будешь прибивать сзади фанеру, даже несмотря на то, что задняя часть повернута к стене, и никто ее не видит. Ты будешь хорошо спать ночью, только если тебе удалось воплотить в своем произведении эстетическую красоту и качество." © Стив Джобс


#5 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 09 апреля 2014 - 14:26

Что за браузер? Версия селениума и драйвера, если используется.?

Что за ошибка вылезает при использовании метода findElements.


  • 0

#6 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 09 апреля 2014 - 18:25

Простите, а вот так не работает разве?
List<WebElement> lst = driver.findElements(By.xpath(".//div/span"));
for (WebElement elem : lst) {
   String text = elem.getText();
}
Если в span есть тег <a>, то его текст всё равно попадёт в elem.getText()
  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#7 elvis

elvis

    Постоянный участник

  • Members
  • PipPipPip
  • 189 сообщений
  • Город:Tallinn


Отправлено 09 апреля 2014 - 19:40

//div/span/text()

 не подойдёт? Или вам принципиально получить список элементов и проверять по одному?


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных