2015-08-10 4 views
2

У вас есть div со следующим содержимым. Может ли кто-нибудь угодить советам, как я могу найти, например. <dd>ID</dd> с <dt>jankovalsky</dt> и выполнить .getText на нем?Поиск элемента xPath в Selenium Webdriver

<dl id="userDetails" class="dl-horizontal"> 
    <dt>Forename</dt> 
    <dd></dd> 
    <dt>Surname</dt> 
    <dd></dd> 
    <dt>ID</dt> 
    <dd>jankovalsky</dd> 
    <dt>Preferred Language</dt> 
    <dd></dd> 
    <dt>Position</dt> 
    <dd></dd> 
    <dt>Accounts in domains</dt> 
    <dd> 
     <ul> 
       <li>something</li> 
     </ul> 
    </dd> 
    <dt>Business roles</dt> 
    <dd> 
     <ul> 
     </ul> 
    </dd> 
    <dt>email</dt> 
    <dd></dd> 
    <dt>Status</dt> 
    <dd></dd> 
</dl>  

Что касается <dt></dt> сделал идентификатор по XPath как @FindBy(xpath = "//*[@id=\"userDetails\"]/dt[3]") но нуждается в более универсальный способе идентифицировать его в случае каких-либо изменений <dt>ID</dt> упорядочения (потому что это достаточно, что в следующей сборке он будет земля в качестве первого и утверждения будет не получится).

И не знаю, как бороться с этим <dd>jankovalsky</dd>

+0

Вы хотите сказать, что вы ищете ''

, который имеет 'jankovalsky', или вы просто хотите текстовое содержимое любого '
' следует '
ID
'? – LarsH

ответ

3

Вам нужно following-sibling здесь:

driver.findElement(By.xpath("//dl[@id='userDetails']/dt[. = 'ID']/following-sibling::dd")).getText(); 
Смежные вопросы