2012-05-14 2 views
0

У меня есть этот кусок HTML:Сложное XPath для новичка

<tr> 
    <td class="has-checkbox"> 
    <input id="abc" class=... value=...> 
    </td> 
    <td class="has-label"> 
    <label for="abc">Name1234</label> 
    </td> 
<tr> 

мне нужно сделать XPath, который получает мне входной элемент, основанный на что там в этикетке, в этом случае Name1234.

Другими словами, для этого случая мне нужен xpath для элемента ввода, и путь должен содержать Name1234 в качестве его переменной.

Любой, кто может помочь мне здесь?

+0

Какой xpath вы уже пробовали? –

ответ

2

//input[@id = //label[. = 'Name1234']/@for] выбирает input элемент (ы) со значением атрибута в id, равным значению атрибута forlabel элементов, где содержимое является Name1234.

+0

Это довольно пятно ... +1 – rishimaharaj

0

Вот решение, используя топоры parent и preceding-sibling:

//label[.='Name1234']/parent::td/preceding-sibling::td/input

0

Это не так сложно, как вы думаете:

xpath=//tr[//label[.="Name1234"]]//input 

другими словами, вы ищете «тр ', который содержит «метку» с текстом «Name1234». Если условие истинно, вы получаете элемент «input»

0

Вы можете использовать /.., этот синтаксис используется для возврата к исходному узлу. В вашем случае:

//label[.='Name1234']/../../td/input 

Вы должны вернуться в 2 раза, потому что input тег является потомком другого td тега.

Here другие введение и пример о том, что вы должны прочитать.

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