Selenium Java单for循环同时操作两个等长List<WebElement>的实现
实现代码
因为你已经确认两个List<WebElement>长度相同,直接使用下标遍历的for循环即可配对获取对应位置的元素:
List<WebElement> one = driver.findElements(By.cssSelector("div[id='divdiscountcheckbox'] input[type='checkbox']")); List<WebElement> two = driver.findElements(By.cssSelector("div[id='divdiscountcheckbox'] em")); // 可选:提前校验长度避免下标越界 if (one.size() != two.size()) { throw new RuntimeException("两个列表长度不一致,无法配对"); } // 单次循环同时获取两个列表对应元素的属性 for (int i = 0; i < one.size(); i++) { boolean isChecked = one.get(i).isSelected(); String text = two.get(i).getText(); // 这里替换成你自己的业务逻辑 System.out.printf("复选框状态:%b,对应文本:%s%n", isChecked, text); }
说明
- 增强for循环(for-each)只能遍历单个集合,无法直接同步两个集合的遍历进度,因此改用基于下标的普通for循环即可满足需求
- 提前添加长度校验可以避免后续页面DOM发生变化导致两个列表长度不一致时抛出的
IndexOutOfBoundsException异常,提升代码健壮性
内容的提问来源于stack exchange,提问作者Ramnath
相关产品推荐
相关产品推荐

