2011-01-18 3 views
1

Например:Как найти родительский элемент, содержащий другой элемент

Я имею следующую структуру:

<td> 
    <a> 
    <input id="MyID1"> 
</td> 

<td> 
    <a> 
    <input id="MyID2"> 
</td> 

<td> 
</td> 

Мы полагаем, что <a> не имеет никаких конкретных атрибутов, чтобы найти его ими.

Так 2 вопроса:

  1. Мне нужно найти <a> во второй тд. Я знаю, что <a> Im look for размещен на том же td с входом «MyID2». Как я могу это сделать?

  2. Мне нужно найти 3-й тд (пустой). Я знаю, что td Im look for является следующим td для td, в котором содержится вход «MyID2». Как я могу это сделать?

Спасибо!

ответ

0

Если вы можете использовать XPath-то, следующее выражение найдет <a> элемент во втором <td>:

//td/a[../input/@id='MyID2']

Это будет найти все <a> элементов, которые являются прямыми потомками <td> элемента, имеющим <input> элемент на том же уровне с атрибутом id, равным 'MyID2'.

+0

Прошло некоторое время, но я не верю, что XPath работает над не-хорошо сформированным структурированным текстом. Вот ссылка на аналогичный вопрос: http://stackoverflow.com/questions/354322/finding-a-node-or-close-to-it-using-xpath-in-non-well-formed-html – Riggy

+1

Все браузеры преобразовать не-сформированный HTML-код в «хорошо просматриваемую», хорошо сформированную модель DOM. Например. Библиотеки JavaScript XPath используют эту модель, чтобы разрешать запросы XPath для поиска и доступа к элементам HTML. Я не очень хорошо знаком с Селеном, но я бы предположил, что Селен работает аналогичным образом. Следовательно, мое «если вы можете использовать XPath». – jarnbjo

Смежные вопросы