使用for循环遍历WebElement提取文本存入列表的问题咨询
问题修复方案
常见故障原因
- 存储结果的列表未提前初始化,直接调用
add()方法会触发空指针异常 - XPath表达式外层多余的括号可能干扰元素匹配逻辑,导致无法正确拿到5个目标strong元素
- 元素未完全渲染完成就执行文本提取操作,会出现
getText()返回空值的情况
修正后可运行代码
// 初始化存储广告格式文本的列表,避免空指针 List<String> actualAdFormatList = new ArrayList<>(); // 匹配目标strong元素,移除XPath外层多余括号 List<WebElement> actualAdFormatsElements = driver.findElements(By.xpath("//h4[text()='Select Ad Format']/..//strong")); // 遍历元素提取文本存入列表 for (WebElement adFormat : actualAdFormatsElements) { actualAdFormatList.add(adFormat.getText()); }
可选优化方案
如果出现元素未加载完成导致的匹配失败,可增加显式等待逻辑:
// 显式等待确保5个目标元素全部加载完成,最长等待10秒 new WebDriverWait(driver, Duration.ofSeconds(10)) .until(ExpectedConditions.numberOfElementsToBe(By.xpath("//h4[text()='Select Ad Format']/..//strong"), 5));
内容的提问来源于stack exchange,提问作者Ashutosh Das
相关产品推荐
相关产品推荐

