![](/img/trans.png)
[英]How to get a numeric value from a webelement in Selenium Webdriver (Java)
[英]How to get table data from a selenium webelement and check column value
在我的 selenium 脚本中,我想从下表中获取表格数据,并比较“电话”列下的所有值并检查所有值是否只是数字。 我尝试使用以下代码,如果不是打印每列的文本,而是显示行数。
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@email.com</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@email.com</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@email.com</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 textemail@email.com,
column text123456789,
column textaddress 1,
column textaddress 2,
column textcity name,
column textHere is user name,
column textemail@email.com,
column text99999999,
column textaddress 1,
column textaddress 2,
column textcity name,
column textHere is user name,
column textemail@email.com,
column textabcdef12,
column textaddress 1,
column textaddress 2,
column textcity name,
因此,您提供的代码段按预期工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.