在我的硒脚本中,我想从下表中获取表数据,并比较“电话”列下的所有值,并检查所有值是否仅为数字。 我尝试使用以下代码,如果不打印每列的文本,而是显示行数。
WebElement table = driver.findElement(By.xpath(“//table[contains(@class, 'table table-style')]”));
List<WebElement> rowsList = table.findElements(By.tagName("tr"));
List<WebElement> columnsList = null;
for (WebElement row : rowsList) {
columnsList = row.findElements(By.tagName("td"));
for (WebElement column : columnsList) {
System.out.println("column text" + column.getText()+ ", "); // here is is just printing number of rows, like 1, 2
}
}
<table class="table table-style" >
<thead>
<tr>
<th class="text-center">
Id
</th>
<th class="text-center">username</th>
<th class="text-center">email</th>
<th class="text-center">phone</th>
<th class="text-center">address1</th>
<th class="text-center">address2</th>
<th class="text-center">City</th>
</tr>
</thead>
<tbody>
<tr>
<td class="text-center">Here is user name</td>
<td class="text-center">[email protected]</td>
<td class="text-center">123456789</td>
<td class="text-center">address 1</td>
<td class="text-center">address 2</td>
<td class="text-center">city name</td>
</tr>
<tr>
<td class="text-center">Here is user name</td>
<td class="text-center">[email protected]</td>
<td class="text-center">99999999</td>
<td class="text-center">address 1</td>
<td class="text-center">address 2</td>
<td class="text-center">city name</td>
</tr>
<tr>
<td class="text-center">Here is user name</td>
<td class="text-center">[email protected]</td>
<td class="text-center">abcdef12</td>
<td class="text-center">address 1</td>
<td class="text-center">address 2</td>
<td class="text-center">city name</td>
</tr>
</table>
通过列名获取单元格值
您的案例中没有任何其他属性来检测某些单元格属于某个列。
我建议使用 XPATH
count
方法通过文本检测列号,并使用它按列获取所有单元格。
对于电话列:
List<WebElement> phoneNumbersList = table.findElements(By.xpath("//td[count(//th[text()='phone']/preceding-sibling::th)]"));
// the same can be dome for "email" and other columns.
检查所有值是否都是数字
看这个: Java 字符串 - 查看字符串是否只包含数字而不包含字母
我尝试使用以下代码,如果不是打印每列的文本,而是显示行数。
我可以确认此代码:
@Test
public void printTable() {
WebDriver driver = new ChromeDriver(new ChromeOptions());
driver.manage().window().maximize();
//local html file
driver.get("file:///D:/projects/print-table/src/test/resources/test.html");
WebElement table = driver.findElement(By.xpath("//table[contains(@class, 'table table-style')]"));
List<WebElement> rowsList = table.findElements(By.tagName("tr"));
List<WebElement> columnsList = null;
for (WebElement row : rowsList) {
columnsList = row.findElements(By.tagName("td"));
for (WebElement column : columnsList) {
System.out.println("column text" + column.getText()+ ", "); // here is is just printing number of rows, like 1, 2
}
}
driver.quit();
}
打印:
column textHere is user name,
column [email protected],
column text123456789,
column textaddress 1,
column textaddress 2,
column textcity name,
column textHere is user name,
column [email protected],
column text99999999,
column textaddress 1,
column textaddress 2,
column textcity name,
column textHere is user name,
column [email protected],
column textabcdef12,
column textaddress 1,
column textaddress 2,
column textcity name,
因此,您提供的代码片段按预期工作。