Попытка создать XPath из этого фрагмента HTML - PullRequest
2 голосов
/ 08 апреля 2010

Я некоторое время играл в XPath, но не могу найти именно то, что хочу.

Я пытаюсь написать XPath для ссылки (click1 и click2 во фрагменте кода ниже) на основе известного текста (myidentity в фрагменте кода ниже). Может кто-нибудь взглянуть и предложить возможное решение?

Фрагмент HTML-кода:

<div class="abc">
  <a onclick="mycontroller.goto('xx','yy'); return false;" href="#">
    <img src="images/controls/inheritance.gif"/>
  </a>
  myidentity
  <span>
    <a onclick="mycontroller.goto('xx','yy'); return false;" href="#">click1</a>
    <a onclick="mycontroller.goto('xx','yy'); return false;" href="#">click2</a>
  </span>
</div>

Ответы [ 3 ]

2 голосов
/ 08 апреля 2010

Трудно сказать, не видя остальную часть HTML, но должно работать следующее:

//div[text()[contains(., "myidentity")]]/span/a
2 голосов
/ 08 апреля 2010

Вам не нужно использовать XPath здесь, вы можете использовать локатор CSS. Они часто быстрее и более совместимы в разных браузерах.

css=div:contains(myidentity) > span a:nth-child(1) //click1
css=div:contains(myidentity) > span a:nth-child(2) //click2

Обратите внимание, что > требуется только для обхода ошибки в библиотеке локаторов CSS, используемой Selenium.

0 голосов
/ 08 апреля 2010

См. Ответ Макроса - эту форму следует использовать.

//div[text()[contains(., "myidentity")]]/span/a[2]

Следующее работает только с одним разделом текста в содержащем div.

Вам нужно будет выбрать текст на основе вашего текста.

Xpath для click1

//div[contains(text(),"myidentity")]/span/a[1]

Xpath для click2

//div[contains(text(),"myidentity")]/span/a[2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...