现在我想从结果页面获取公交车号。我们如何使用Selenium Web驱动程序找到计数?
这个问题似乎很局限,但这是怎么回事。
首先,您需要分析包含数据的表的结构,在您的情况下,包含数据的结果表的ID并不是那么大,但是包含表的div确实需要这样做。
所以自然地,您首先检索div:
WebElement tableContainer = driver.findElement(By.id("table-container"));
检查div的内容后,我们看到它有多个表,但还有其他东西,因此让我们首先解析这些表。
List<WebElement> allTables = tableContainer.findElements(By.tagName("table"));
现在我们有了所有表,我们也知道我们需要的表没有ID,而另一个表的ID为“ table-1”,因此让我们根据这些事实将其过滤掉。
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"));
可是等等!结果表还包含许多实际上不是结果的无用行。因此,让我们锚定结果行中实际存在的内容,例如,类名称为“ avaiTableHeaderA”的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()
以获得返回的结果量,或对行本身执行各种操作,例如提取特定数据(如出发/到达时间等)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句