【发布时间】:2016-12-30 02:04:45
【问题描述】:
我正在做我的第一个 selenium 项目,但遇到了一些障碍。我有一个包含 3 个不同表格的网页。我只想从这些表之一中提取数据。我面临的问题是引导程序用于设置这些页面的样式,因此所有表都共享同一个类,并且它们都没有我可以专门搜索的 id。通过搜索 tr/td 的 xpath,我能够在不同的页面上执行此操作,但由于有多个表,这不适用于此页面。检查我想从中提取数据的表的页面源,我得到如下内容:
<div class="col-md-4">
<div class="panel panel-success">
<div class="panel-panel-heading>
<h3 class="panel-title">table title</h3>
</div>
<div class="table-responsive">
<table class="table-striped table-bordered">
<thead>...</thead>
<tbody>
<tr ng-repeat="element in main.elementService.elementTable" class="ng-scope">
<td class="ng-binding">info1</td>
<td class="ng-binding">info2</td>
<td class="ng-binding">info3</td>
<td class="ng-binding">info4</td>
</tr>
<tr ng-repeat="element in main.elementService.elementTable" class="ng-scope">
<tr ng-repeat="element in main.elementService.elementTable" class="ng-scope">
<tr ng-repeat="element in main.elementService.elementTable" class="ng-scope">
</tbody>
</table>
</div>
所以这导致我不确定我可以使用什么来仅选择此表。如果我搜索tr 或td,我也会从页面上的其他表格中获取数据。
我看到的这张表的唯一独特之处是<div class="col-md-4">.
我不知道这是否可能,但我的想法是进行某种组合搜索以转到此特定 div,然后转到 xpath tr/td 从表的每个单元格中提取数据,但我我是硒新手,我不知道该怎么做。我正在查看的文档似乎没有显示如何将多个策略组合在一起,而且我在为谷歌搜索措辞时遇到了麻烦,所以我还没有找到一个谷歌链接让我对如何做到这一点有任何见解.
我尝试过类似的方法,但我认为我的语法不正确
List<WebElement> TableElems = chrome.findElements(By.xpath("//div[@class='col-md-4']//tr/td"));
我也试过
List<WebElement> TableElems = chrome.findElements(By.xpath("//div[@class='col-md-4']" && "//tr/td"));
但这里不允许使用 && 运算符。
如果有人有任何想法可以提示我正确的方向,我将不胜感激。
【问题讨论】:
-
仅供参考
"col-md-4"是div的class属性而不是id...您应该尝试使用此xPath...List<WebElement> TableElems = chrome.findElements(By.xpath("//div[@class='col-md-4']/descendant::td")); -
我已经编辑了,谢谢。
标签: java html selenium xpath html-table