2016-09-04 4 views
1

все, что я просматриваю в веб-приложении, и мне нужно найти определенный элемент, но я не могу найти его с помощью xpath. Это HTML-код, где я пытаюсь найти элементJava-элемент поиска selenium с xpath

<table> 
    <tr> 
     <th class="details"> 
      <label>Name</label> 
     </th> 
     <td class="data"> 
      <div id="..."> 
       <div id="..."></div> 
       <input id="..." type="text"> 
      </div> 
     </td> 
    </tr> 
.......... 
</table> 

я успешно нашел его, но когда я заметил, что идентификаторы автоматически сгенерирован я застрял. Я попытался решить эту проблему, найдя метку, содержащую текст «Имя», а затем поиск братьев и сестер, но ничего. Это мой XPath:

//*[text()[contains(.,'Name')]]/../following-sibling::td 
+0

Попробуйте это '// ввод [@ типа =«текст»]' и 'опечатки name' как' Нома 'в вашем xpath. – Ravikumar

+0

Классы также меняются? как детали, данные – lauda

+0

Я забыл сказать, что на этом сайте есть несколько входных тегов, однако также меняется класс. –

ответ

1

Вы должны попробовать использовать ниже xpath: -

String xpath = "(.//label[text() = 'Name']/following::input)[1]"; 

Или

String xpath = ".//label[text() = 'Name']/../following-sibling::td//input"; 

Или

String xpath = "(.//input[preceding::label[text() = 'Name'])[1]"; 

Или

String xpath = ".//input[ancestor::td[preceding-sibling::th/label[text() = 'Name']]]"; 

Вы можете использовать любого из них выше xpath найти элемент ввода желания, как показано ниже: -

browser.findElement(By.xpath(xpath)); 
+1

спасибо, вторая работала –

0

попытка ниже XPath

"//label[contains(.,'Name')]/../following-sibling::td/div/input[@type='text']" 

Если предположить, что структура DOM остается постоянной.

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