如何在Java版Selenium中创建列表遍历打印及提取指定日期文本
在Java环境下用Selenium处理列表迭代与日期提取
一、创建元素列表并迭代打印数据
要实现这个需求,核心是用Selenium的findElements()方法获取目标元素的集合(返回List<WebElement>),之后通过循环遍历这个集合就能逐个操作元素了。
给你写个完整的示例代码,你可以直接参考:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import java.util.List; public class SeleniumListIteration { public static void main(String[] args) { // 配置ChromeDriver路径,记得换成你本地的实际路径 System.setProperty("webdriver.chrome.driver", "path/to/your/chromedriver"); WebDriver driver = new ChromeDriver(); driver.get("你的目标页面URL"); // 定位所有encounter项的元素列表 List<WebElement> encounterItems = driver.findElements(By.cssSelector(".encounter-list .item")); // 迭代列表并打印每个项的文本内容 System.out.println("所有Encounter条目内容:"); // 普通for循环写法 for (int i = 0; i < encounterItems.size(); i++) { System.out.println(encounterItems.get(i).getText()); } // 如果你用Java 8及以上版本,也可以用更简洁的forEach写法 // encounterItems.forEach(item -> System.out.println(item.getText())); // 别忘了关闭浏览器 driver.quit(); } }
这里要注意findElements()和findElement()的区别:前者返回匹配到的所有元素的列表,后者只返回第一个匹配的元素,可别搞混了。
二、提取并打印MM/DD/YYYY格式的日期
根据你提供的HTML结构,日期都在带有link-text类的<span>标签里。咱们可以先定位这些span元素,再提取文本,还可以加个正则校验确保格式正确。
示例代码如下:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import java.util.List; import java.util.regex.Pattern; public class SeleniumDateExtractor { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "path/to/your/chromedriver"); WebDriver driver = new ChromeDriver(); driver.get("你的目标页面URL"); // 定义匹配MM/DD/YYYY格式的正则表达式 Pattern validDatePattern = Pattern.compile("\\d{2}/\\d{2}/\\d{4}"); // 定位所有包含日期的span元素 List<WebElement> dateElements = driver.findElements(By.cssSelector(".encounter-list .link-text")); System.out.println("提取到的符合格式的日期:"); for (WebElement dateElement : dateElements) { String dateText = dateElement.getText().trim(); // 校验日期格式,确保只打印符合要求的内容 if (validDatePattern.matcher(dateText).matches()) { System.out.println(dateText); } } driver.quit(); } }
额外小提示
如果你的页面是动态加载的(比如日期列表需要等待一会儿才会显示),记得添加等待逻辑,避免因为元素未加载完成导致获取空列表:
import org.openqa.selenium.support.ui.WebDriverWait; import org.openqa.selenium.support.ui.ExpectedConditions; import java.time.Duration; // 在获取元素列表前,先等待10秒,直到元素加载完成 WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.cssSelector(".encounter-list .link-text")));
内容的提问来源于stack exchange,提问作者CPP
相关产品推荐
相关产品推荐

