2016-09-20 5 views
0

Как получить теги на одном уровне с селеном?

<div id="mw-content-text"> 
 
    <p title="Meanings" style="margin-bottom: 0.5em;"> 
 
    Meanings 
 
    </p> 
 
    <dl> 
 
    <dd> 
 
     data1 
 
    </dd> 
 
    </dl> 
 
    <p title="Idioms"> 
 
    Idioms 
 
    </p> 
 
    <dl> 
 
    <dd> 
 
     data2 
 
    </dd> 
 
    </dl> 
 
</div>
Я хочу, чтобы вставить data1 и data2 в разные ArrayList с селеном. Как я могу сделать?

+0

Проверили ли вы эти вопросы? http://stackoverflow.com/questions/15954780/find-element-under-dl-dt-using-selenium-webdriver-c-sharp и http://stackoverflow.com/questions/11521602/selenium-get-element- class-and-text – erhun

+0

Я проверил эти вопросы и не работал. На самом деле проблема заключается в «dl dont include id или class или что-то в этом роде». Когда я получаю текст из «mw-content-text», данные1 и data2 объединяются. Я не могу разделить данные1 и data2. –

+0

Используйте селектор типа # mw-content-text dd, чтобы найти все элементы и зацикливать их на них и сохранить текст. – lauda

ответ

1

Предполагая, что атрибут title тега p всегда присутствует и согласован.

Использование CSS

"div[id='mw-content-text'] > p[title='Meanings'] + dl>dd" 
"div[id='mw-content-text'] > p[title='Idioms'] + dl>dd" 

Использование Xpath

"//div[@id='mw-content-text']/p[@title='Meanings']/following-sibling::dl[1]/dd" 
"//div[@id='mw-content-text']/p[@title='Idioms']/following-sibling::dl[1]/dd" 
+0

Вы можете немного упростить селектор CSS, например: # mw-content-text> p [title = 'Meanings'] + dl> dd' и т. Д. – JeffC

+0

спасибо, он работает успешно. Могу ли я задать еще один вопрос? Значения включают в себя множество данных. Например; Усвоение этих значений включает данные1, данные2, данные3 и Идиомы включают данные4, data5, data6. Я получаю только идиомы без каких-либо проблем, но когда я хочу получать только значения (data1, data2, data3), селен дает мне все данные (data1, data2, data3, data4, data5, data6). Как я могу исправить tihs? –

+0

Я пишу этот код: Список elements = getWebDriver(). FindElements (By.xpath ("// div [@ id = 'mw-content-text']/p [@ title = 'Meanings']/дл/дд Sibling :: ")); –

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