2015-05-19 3 views
0

Я работаю с очень грязной структурой страницы и фрагментом, который я застрял на выглядит примерно так:Есть ли способ вызвать nextElementSibling в Selenium Webdriver с Java?

<div> 
    <h3>...</h3> 
    <ul>...</ul> 
    <h3>...</h3> 
    <ul>...</ul> 
    ... 
</div> 

Я хочу, чтобы получить один из <ul> элементов, так что я мог копать глубже в нее и получить фактическое значение, которое мне действительно нужно оттуда (в нем есть таблица). В настоящее время я могу получить элемент <h3>, который предшествует <ul>, который я ищу. Поскольку уль-элементы не имеют каких-либо уникальных идентификаторов, которые я мог бы использовать для их получения напрямую, я надеюсь достичь этого, получив элемент, который появляется после h3-тега (на том же уровне). Есть ли способ получить то, что кажется nextElementSibling? Спасибо!

NB! Элементы h3 и ul не имеют строгого порядкового номера - перед ними может быть или не быть нескольких элементов, поэтому получение n-го дочернего элемента, похоже, не является вариантом.

ответ

2

Вы можете достичь этого либо с помощью xpath, либо с помощью javascript.

Xpath:

driver.find(By.xpath("//div/h3/following-sibling::ul[1]")); 

JavaScript:

JavaScriptExecutor jsExec = (JavaScriptExecutor)driver; 
WebElement ulElement = jsExec.executeScript("return arguments[0].nextSibling;", driver.find(By.cssSelector("div h3"))); 

Надежда, что помогает!

+0

Это сделал трюк, спасибо! –

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