gpt4 book ai didi

java - Selenium 网络驱动程序 : Help getting specific row data from a table

转载 作者:行者123 更新时间:2023-12-02 06:39:17 27 4
gpt4 key购买 nike

我有一个包含 12 列的表,其中一列名为“数量”,我需要做的是找出哪一列是数量列,然后从表中获取该列的所有数据。

这是我编写的一些粗略代码,但目前它只是为我提供表中的所有数据,而不是我需要的部分。

// Get the table name
WebElement table = driver.findElement(By.className("compact"));

// Get all the Table headers and look for one the element called quantity.
List<WebElement> allHeaders = table.findElements(By.tagName("th"));
System.out.println("This is the total numbers of headers" + allHeaders.size());
int quantityHead = 0;

// Get the column where the quantity is listed
for(WebElement header : allHeaders)
{
quantityHead++;
if(header.getText().equalsIgnoreCase("Quantity"))
{
System.out.println(header.getText());
System.out.println(quantityHead + " is the column number for the quantity");
}
}

// Now get all the TR elements from the table
List<WebElement> allRows = table.findElements(By.tagName("tr"));
System.out.println("This is how many allRows: " + allRows.size());

// This is how many items are in the order item table. number of rows - 1 coz top row is the headings
int z = allRows.size() - 1;
System.out.println("This is how many items are in the table : " + z );

// Work out the cells we need to get by
// iterate over all the td
for (WebElement row : allRows) {

// now we have all the td
List<WebElement> cells = row.findElements(By.tagName("td"));

for (WebElement cell : cells) {

for(int x=0; x <= allHeaders.size(); x++)
{
int y = x;

// if y = the value where the qty header is then output the text of that cell
if(y == quantityHead )
{
System.out.println();
System.out.println("The quanity is: " + cell.getText());
}
}
}
}

最佳答案

首先确定数量在表中的列位置。然后通过xpath找到元素

WebElement table = driver.findElement(By.className("compact"));

List<WebElement> th=table.findElements(By.tagName("th"));
int col_position=0;
for(int i=0;i<th.size();i++){
if("quantity".equalsIgnoreCase(th.get(i).getText())){
col_position=i+1;
break;
}
}
List<WebElement> FirstColumns = table.findElements(By.xpath("//tr/td["+col_position+"]"));
for(WebElement e: FirstColumns){
System.out.println(e.getText());
}

希望这有帮助

关于java - Selenium 网络驱动程序 : Help getting specific row data from a table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19313385/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com