2012-01-18 2 views
3

У меня возникли проблемы с выяснением XPATH следующего. Существует несколько других элементов с похожими атрибутами (включая ID, но это не моя страница), и единственный способ обеспечить правильный элемент - это получить его через соседнюю метку «Copyright». Это HTML:Найти элемент через соседнюю метку с помощью XPath

<div class="row"> 
    <div class="label">Copyright :</div> 
    <div id="container-id" class="field" >2011 Homeland Ent</div> 
</div> 
<div class="row"> 
    <div class="label">Another Label :</div> 
    <div id="container-id" class="field" >Another Entry</div> 
</div> 

Обратите внимание, что из-за некорректного HTML, //*[@id="container-id"] не будет здесь достаточно. Каким будет правильный XPATH, чтобы получить текст «Homeland Ent» 2011 года?

+0

Можете ли вы предоставить полный HTML-код или пример URL-адреса? –

ответ

3

Что-то вроде этого, возможно (я не был уверен, что если «Авторское право» текст был частью поиска, включил его в любом случае

//*[@class="label" and starts-with(., "Copyright")]/following-sibling::*[@id="container-id"] 
2

Похоже, каждый row содержит один label/field пару. Если это правда, то короче, проще выражение (которое не требует following-sibling) возможно:

//*[div[@class='label' and starts-with(., 'Copyright')]]/div[@id='container-id'] 
0

использовать этот XPath, он будет работать

//div[text()="Copyright :"]/parent::node()/div[@id="container-id"]/text() 
Смежные вопросы