使用Java Selenium提取并验证网页表格金额列排序
Java Selenium 提取表格金额列并验证排序
以下是实现提取目标网页表格金额列、输出顺序列表并验证排序逻辑的完整代码和说明:
步骤说明
- 初始化ChromeDriver并打开目标页面
- 定位表格的金额列(目标页面中金额列是第4列)
- 遍历所有数据行,提取金额文本并转换为可比较的数值
- 输出原始顺序的金额列表
- 验证列表是否为升序或降序排列
完整代码
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class TableSortValidation { public static void main(String[] args) { // 设置ChromeDriver本地路径(根据你的实际配置调整) System.setProperty("webdriver.chrome.driver", "path/to/chromedriver"); WebDriver driver = new ChromeDriver(); driver.get("https://sakshingp.github.io/assignment/home.html"); driver.manage().window().maximize(); // 定位表格所有数据行(跳过表头行) List<WebElement> rows = driver.findElements(By.xpath("//table[@id='transactionsTable']/tbody/tr")); List<Double> originalAmounts = new ArrayList<>(); // 提取并处理金额列数据 for (WebElement row : rows) { // 定位当前行的第4个td(金额列) String amountText = row.findElement(By.xpath("./td[4]")).getText(); // 清理格式:去掉$符号和逗号,转换为Double类型 double amount = Double.parseDouble(amountText.replace("$", "").replace(",", "")); originalAmounts.add(amount); } // 输出原始顺序的金额列表 System.out.println("原始顺序的金额列表:"); for (double amount : originalAmounts) { System.out.println(amount); } // 验证排序类型 List<Double> sortedAsc = new ArrayList<>(originalAmounts); Collections.sort(sortedAsc); List<Double> sortedDesc = new ArrayList<>(originalAmounts); Collections.sort(sortedDesc, Collections.reverseOrder()); if (originalAmounts.equals(sortedAsc)) { System.out.println("\n金额列按升序排列"); } else if (originalAmounts.equals(sortedDesc)) { System.out.println("\n金额列按降序排列"); } else { System.out.println("\n金额列未按升序或降序排列"); } driver.quit(); } }
关键细节说明
- 金额格式处理:目标页面金额为
$1,234.56格式,必须移除$和逗号才能转换为数值,否则会触发NumberFormatException - 行定位逻辑:用
tbody/tr定位数据行,避免误取表头行 - 排序验证方式:通过复制原始列表并分别做升序、降序排序,再与原列表对比,判断当前表格的排序类型
内容的提问来源于stack exchange,提问作者Lakshay Saini
相关产品推荐
相关产品推荐

