2015-04-06 7 views
1

У меня есть HTML-код, как это:Попытка найти следующий элемент Div от текущего

<div style="display: inline-block; position: absolute; top: 84px; bottom: auto; left: 5px; right: auto; width: auto; height: auto; max-width: none; max-height: none;" _afrc="2 1 8 1 start top">**CRED ID:** </div> 
<div style="display: inline-block; position: absolute; top: 84px; bottom: auto; left: 115px; right: auto; width: auto; height: auto; max-width: none; max-height: none;" _afrc="3 1 8 1 start top">**11111972**</div> 
<div style="display: inline-block; position: absolute; top: 103px; bottom: auto; left: 5px; right: auto; width: auto; height: auto; max-width: none; max-height: none;" _afrc="2 1 10 1 start top">**CAQH ID:** </div> 
<div style="display: inline-block; position: absolute; top: 103px; bottom: auto; left: 115px; right: auto; width: auto; height: auto; max-width: none; max-height: none;" _afrc="3 1 10 1 start top">**11189685**</div> 

если что-то показывает, как две звезды для тебя это должно быть жирным. Я сделал текст смелым, чтобы он показывался лучше. Во всяком случае, я могу использовать //div[contains(text(),'CRED ID:')], чтобы получить элемент div, содержащий «CRED ID». Фактическое значение id-ключа - «11111972». Мне интересно, как, когда я использую вышеуказанный xpath, я могу сказать, чтобы получить текстовое значение следующего div (т. Е. 11111972). Я действительно не могу использовать ../div, потому что на этом уровне есть более ранние и более поздние div. Может ли кто-нибудь предложить?

Я мог бы использовать @FindBy и сделать список, найти индекс, если «CRED ID» и добавить 1, я полагаю, но похоже, что должен быть другой способ?

С благодарностью

p.s. Я никогда не ухаживал за следующим братом, но я не знаю, будет ли это работать здесь?

ответ

1

Вы можете использовать following-sibling ось:

WebElement credId = driver.findElement(By.xpath("//div[contains(text(),'CRED ID:')]")); 
WebElement credIdValue = credId.findElement(By.xpath("following-sibling::div")); 

Или, вы можете достичь его на одном дыхании:

WebElement credIdValue = credId.findElement(By.xpath("//div[contains(text(),'CRED ID:')]/following-sibling::div")); 
+0

Спасибо. Считаете ли вы, что это было бы более эффективно или делало @FindBy и составлял список, а затем перебирал список до тех пор, пока не найду текст, а у нас следующий элемент? – Tony

+0

@ Тони, я бы просто получил элемент по xpath на основе текста, как было предложено. – alecxe

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