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

Фотография

Выбор ссылки


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

#1 Mevmix

Mevmix

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

  • Members
  • Pip
  • 43 сообщений
  • ФИО:Evgen

Отправлено 01 апреля 2014 - 12:06

Вообщем на странице есть. C#

 

<ol class = "global">

      <li clss = "global_s">тут ссылка_1</li>

      <li clss = "global_s">тут ссылка_2</li>

      <li clss = "global_s">тут ссылка_3</li>

      <li clss = "global_s">тут ссылка_4</li>

      <li clss = "global_s">тут ссылка_5</li>

</ol>

Подскажите как выбрать вторую ссылку.

количество <li> посчитал

но как в xpath это применить запутался совсем

Спасибо

 


  • 0

#2 vmaximv

vmaximv

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

  • Members
  • PipPipPipPip
  • 350 сообщений

Отправлено 01 апреля 2014 - 12:11

У меня одного дежавю?

http://software-test...ka/#entry128823


  • 0

#3 vitorg

vitorg

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

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 01 апреля 2014 - 12:11

(//li)[2]


  • 0

#4 Mevmix

Mevmix

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

  • Members
  • Pip
  • 43 сообщений
  • ФИО:Evgen

Отправлено 01 апреля 2014 - 12:17

У меня одного дежавю?

http://software-test...ka/#entry128823

в том вопросе выпадающий список был, здесь просто ссылке на странице.

но дело в том что ссылка имеет еще тег <a hreff = "ссылка">

 

вот как до нее добрать((((


  • 0

#5 vitorg

vitorg

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

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 01 апреля 2014 - 12:19

(//li)[2]/a


  • 0

#6 vmaximv

vmaximv

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

  • Members
  • PipPipPipPip
  • 350 сообщений

Отправлено 01 апреля 2014 - 12:51

Фейл

<html>
<head/>
<body>
<div>
<li></li>
<li></li>
<li><a></a></li>
</div>
<div>
<li></li>
<li><a></a></li>
<li></li>
</div>
</body>
</html>

  • 0

#7 vitorg

vitorg

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

  • Members
  • PipPipPipPip
  • 408 сообщений

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


Фейл

<html>
<head/>
<body>
<div>
<li></li>
<li></li>
<li><a></a></li>
</div>
<div>
<li></li>
<li><a></a></li>
<li></li>
</div>
</body>
</html>
Что это значит? Если вы про фейл локатора (//li)[2]/a, то так и должно быть, локатор был не для этой разметки, а для приведённой в первом посте. В вашем случае он конечно ни с чем не совпадёт, т.к. его условие жёсткое - выбрать a во втором li, а во втором li нет a, на это и рассчитано. Хорошо не когда локатор совпал хоть с чем-то, а когда он совпал/не совпал именно с тем с чем требовалось.
  • 0

#8 Mevmix

Mevmix

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

  • Members
  • Pip
  • 43 сообщений
  • ФИО:Evgen

Отправлено 01 апреля 2014 - 13:14

приведу на примере гугла

ввели в поисковик Selenium

получаем вот такую структуру

 

<li class='g'>.....</li>

<li class='g'>.....</li>

<li class='g'>.....</li>

<li class='g'>.....</li>

<li class='g'>.....</li>

 

вот как тут выбрать 1 или 5 ссылку

внутhи еще вложенyые DIV, <a href=....>


  • 0

#9 vmaximv

vmaximv

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

  • Members
  • PipPipPipPip
  • 350 сообщений

Отправлено 01 апреля 2014 - 13:19

условие жёсткое - выбрать a во втором li, а во втором li нет a, на это и рассчитано.

Т.е. вы предполагаете, что у ТС, помимо приведенных выше тегов, больше на странице нет ни одного "лишнего" <li>?
Смелое предположение. Ну а если есть (что имеет очень большую вероятность), или появится когда нибудь - будете объяснять ему, что это уже "другая разметка"? :)
  • 0

#10 Mevmix

Mevmix

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

  • Members
  • Pip
  • 43 сообщений
  • ФИО:Evgen

Отправлено 01 апреля 2014 - 13:32

разобрался, есть просто два вложенных тега <a>

когда указал обращаться ко второму сработало все


  • 0

#11 vitorg

vitorg

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

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 01 апреля 2014 - 13:36

Нет, я ничего не предполагаю, а ответил исключительно на поставленный вопрос, пример показывал только как именно обратиться ко второму элементу массива, но совершенно не учитывал все тонкости конкретной вёрстки и особенности работы команды разработчиков ТС, впрочем, ваш вариант с фейлом лишь один из возможных и заранее нельзя сказать что будет лучше, это уже задача самого ТС определиться с выбором надёжности локатора. Обычно можно однозначно зацепиться за более высокий в иерархии элемент и знать, что там будет только один список.


  • 0

#12 vmaximv

vmaximv

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

  • Members
  • PipPipPipPip
  • 350 сообщений

Отправлено 01 апреля 2014 - 13:40

Если настолько абстрагироваться, а руководствоваться только тем, что дал ТС, то абсолютно никакой разницы между (//li)[2]/a и //li[2]/a нет.
  • 0

#13 vitorg

vitorg

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

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 01 апреля 2014 - 15:35

Да, разницы почти нет, я скорее на автомате написал вариант со скобками как более однозначный.

 

Но если всё-таки хочется увидеть разницу, то она будет видна в этом примере:

<li><a></a></li>
<span><li><a></a></li></span>

(//li)[2]/a - отработает как и требуется

//li[2]/a - не найдёт локатор, т.к. не существует в документе такого li который бы являлся вторым потомком своего родителя.

 

В этом основная тонкость, что если первый вариант говорит - "найди мне второй li в документе и верни его прямого потомка a", то второй вариант говорит "найди мне такой li который является вторым потомком своего родителя и дай мне его прямого потомка a" - зачастую это совсем не то, что требуется, но исключительно по счастливому стечению обстоятельств такая конструкция тоже иногда работает.


  • 0


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

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