2016-09-20 180 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>
我想插入数据1和数据2成不同的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-班级和文字 – erhun

+0

我检查了这些问题,并没有工作。其实问题是“不要包括身份证或班级什么的。”当我从'mw-content-text'获取文本时,data1和data2会聚在一起。我不能分数据1和数据2。 –

+0

使用像#mw-content-text dd这样的选择器来查找所有元素并循环并保存文本。 – lauda

回答

1

假设p标签的title属性始终存在且一致。

使用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 ='含义'] + dl> dd'等等。 – JeffC

+0

谢谢,它工作成功。我可以问另一个问题吗?含义包括大量的数据。例如;假定含义包括data1,data2,data3和习语包括data4,data5,data6。我只能得到没有任何问题的习语,但是当我只想得到意义(data1,data2,data3)时,硒给我所有数据(data1,data2,data3,data4,data5,data6)。我该如何解决这个问题? –

+0

我写这段代码: 列表 elements = getWebDriver()。findElements(By.xpath(“// div [@ id ='mw-content-text']/p [@ title ='Meaningings']/following-同级:: DL/DD“)); –

相关问题