在我的selenium脚本中,我想从下表中获取表数据,比较“phone”列下的所有值,并检查所有值是否仅为数字。我尝试使用以下代码,如果不是打印每列的文本,而是显示行数。
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>
通过列名获取单元格值
在您的案例中,没有任何附加属性可以检测某个单元格是否属于某个列。
我建议使用XPATHcount
方法通过文本检测列编号,并使用它按列获取所有单元格。
对于电话专栏:
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,
因此,您提供的代码片段按预期工作。
问题内容: 我从SQL获取数据并将其放在列表中。这就是我现在正在尝试的 这就是我从sql获取数据的方式, 桌子看起来像这样 aID,bID,名称 ** 问题 ** 我被困在如何将项目添加到列表中,这 也是最佳实践吗? 问题答案:
我有以下代码: LR是类的列表类型。在这个列表中,我有15个索引,例如在索引[0]中,我有: 现在在这个索引[0]中,我有两个int的变量end 88和start 96 在这个for循环中,我需要做的是: _fts是一个<代码>列表 我有两个错误: 错误31“系统”的最佳重载方法匹配。集合。通用。列表。添加(int)”有一些无效参数 和 错误32参数1:无法从“Lightings\u提取器”转换。
问题内容: 我正在基于CodeIgniter的应用程序。这里的代码: 控制器 : 型号 : 查看 : Javascript : 上面的代码运行良好。 现在,我想通过ajax请求将数据提取到。我已经从url创建了一个ajax请求,可以从这里,where 和进行说。 Ajax响应产生: 问题 如何使用Ajax数据源配置数据表,以及如何将数据显示到表中,所以我可以使用数据例如创建类似代码的链接 问题答案
问题内容: 如何获得特定表中的列名列表? IE。 火鸟表: 得到这样的列表: 问题答案: 如果要获取特定表中的列名列表,则这是您需要的sql查询: 我在firebird 2.5中尝试过此方法,并且可以正常工作。 顺便说一句,YOUR-TABLE-NAME周围的单引号是必需的
您好,这里的场景是我想在页面的文本字段中输入一些值,在此之前,我需要使用xpath查找文本字段。 所以在这里,我在Excel表中有这些字段的值和xpath。如何让上面的代码工作?两个片段都不起作用或显示任何错误。 如能回复,我们将不胜感激。
我想知道无论如何都有从Azure Cosmos获得所有数据库的列表。我看到一个可能的解决办法在这里。然而,如果我只知道连接字符串,有没有任何东西可以做它?