现在我想从结果页面获取总线数量。 我们如何使用selenium web驱动程序找到计数?
答案 0 :(得分:1)
这个问题看起来非常本地化,但现在的情况如何。
首先你需要分析包含数据的表的结构,在你的情况下,包含数据的结果表没有一个不太好的ID,但是包含表的div这样做我们必须工作从那起。
很自然地,你首先检索div:
WebElement tableContainer = driver.findElement(By.id("table-container"));
在检查div的内容时,我们看到它有多个表,还有其他东西,所以我们先解析表。
List<WebElement> allTables = tableContainer.findElements(By.tagName("table"));
既然我们已经拥有了所有的表,我们也知道我们需要的表没有ID而另一个表的ID是&#34; table-1&#34;所以,让我们根据这些事实将其过滤掉。
WebElement resultTable = null;
for(WebElement table : allTables) {
if("table-1".equalsIgnoreCase(table.getAttribute("id")){
continue;
}
resultTable = table;
break;
}
然后我们可以检索结果表的行。
List<WebElement> resultRows = resultTable.findElements(By.tagName("tr"));
但是等待!结果表还包含许多实际上没有结果的无用行。因此,让我们锚定到结果行中实际存在的内容,例如具有类名&#34; avaiTableHeaderA&#34;的TD元素;包含出发时间。
List<WebElement> trueResultRows = new ArrayList<WebElement>();
for(WebElement row : resultRows) {
List<WebElement> rowDataElements = row.findElements(By.tagName("td"));
for(WebElement rowData : rowDataElements) {
if("avaiTableHeaderA".equalsIgnoreCase(rowData.getAttribute("class"))){
trueResultRows.add(row);
break;
}
}
}
现在您已经拥有列表中的所有实际结果行,您可以调用:
trueResultRows.size()
获取返回的结果数量,或者对行本身执行各种操作,例如提取出发/到达时间等特定数据。