为了进行描述性统计分析,我需要在网页上获取数据。
一条记录如下所示:
<div class="space"></div>
<p style="margin-bottom: -5px;">R110327</p>
<h1>Test</h1>
<div class="hline_index"></div>
<p>TestProfession<br>
city, street<br>
Tel: 129128312 Serie, Fax: 214213413<br>
Email: <a href="mailto:test">test</a><br>
Web: <a href="test.at" target="_blank">http://www.test.at</a><br>
<br>
Language: English<br>
Profession: meditation, sport<br></p>
<div class="hline_index"></div>
<div class="space"></div>
我正在用
selenium 2.42.2
来做。出于测试目的,我尝试收集fullName, profession and the street
。public ArrayList<Person> getWantedFields() {
log.info("retrieve wanted fields");
resultList = new ArrayList<Person>();
WebElement fullName = driver.findElement(By.xpath("//h1"));
WebElement profession = driver.findElement(By.xpath("//p"));
WebElement street = driver.findElement(By.xpath("//p/br[1]"));
//2811 results
for (int i = 0; i < 2811; i++) {
resultList.add(new Person(fullName.getText(), profession.getText(), street.getText(), null, null, null, null, null));
}
log.info(resultList.toString());
return resultList;
}
但是,我只能返回:
[Person [fullName=Search, profession=, street=, ...
如您所见,只有第一个字段总是给我相同的文本,其他两个字段给我返回“”。
我认为我的
xpath
是错误的,但是当我没有标识符时,我正在努力获取所需字段。有什么建议如何获得这三个领域的?
感谢您的回答!
最佳答案
您可能要尝试访问的元素之前有几个<p>
元素。
您实际要访问的所有元素都在<div id="content_head_folge">
下。
因此,您应该使用//div[@id='content_head_folge']
启动每个Xpath。
List<WebElement> fullNames = driver.findElements(By.xpath("//div[@id='content_head_folge']/h1"));
List<WebElement> professions = driver.findElements(By.xpath("//div[@id='content_head_folge']/p"));
List<WebElement> streets = driver.findElements(By.xpath("//div[@id='content_head_folge']/p/br[1]"));
//2811 results
for (int i = 0; i < 2811; i++)
resultList.add(new Person(fullNames.get(i).getText(), professions.get(i).getText(), streets.get(i).getText(), null, null, null, null, null));